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

    欢迎关注本人的微信公众号:
    ansible系列第三篇(ansible-playbook使用)