暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ansible系列第三篇(playbook使用)

运维开发圈 2018-12-19
278

ansible playbook

注意: 以下内容在ubuntu16.04系统经过测试,ansible系列都是以普通用户执行ansible命令和ansible-playbook脚本.

  • 编写剧本需要遵循YAML语法。

  • YAML语法:

    进行缩进时,必须使用空格进行缩进。
    第一行使用三个横杠作为开始。 "---" 表示文档开始。
    第二行使用"-"作为开头(横杠后面有空格),  表示一个块序列的节点。
    在YAML语法中使用冒号映射键值对时,冒号后面要有空格。
    可同时写多个主机,每台主机用逗号隔开。

  • 编写playbook剧本:

    $ cat ping.yaml 
    ---
    - hosts: test
      remote_user: yuan
      tasks:
      - name: ping host
        ping:
      - name: mkdir test directory
        file:
          path: /testdir/test
          state: directory

  • 检查和调试剧本:

    语法检查:  ansible-playbook --syntax-check ping.yaml
    调试剧本:  ansible-playbook -S -R root --check ping.yaml
    调试剧本不会在被控机真正执行。只是模拟是否能正常执行剧本。

  • 运行剧本:

    ansible-playbook -S -R root ping.yaml

    一个playbook是由一个或多个play组成的。

    每个play在执行时都先执行一个默认任务(Gathering Facts)会收集当前play对应的目标主机的相关信息。收集完信息,才执行指定的任务。

  • 编写一个安装nginx的playbook剧本:

    cat nginx.yaml 
    ---
    - hosts: test
      remote_user: yuan
      tasks:
      - name: add nginx keys
        apt_key: 
          url: http://nginx.org/keys/nginx_signing.key 
          state: present
      - name: nginx add source.list deb url
        lineinfile: 
          path: /etc/apt/sources.list 
          line: "deb http://nginx.org/packages/ubuntu/ xenial nginx"

      - name: add deb-src url
        lineinfile:
          path: /etc/apt/sources.list
          line: "deb-src http://nginx.org/packages/ubuntu/ xenial nginx"

      - name: nginx
        apt:
          name: nginx
          state: latest
          update_cache: yes

      - name: start nginx
        systemd:
          name: nginx
          state: started


文章转载自运维开发圈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论