4EWQE 发表于 2017-11-7 10:48:12

ansible-playbook

yaml的基本元素
                变量
                Inventory
                条件测试
                迭代
               
        playbook的组成结构;
                Inventory
                modules
                Ad hoc Command
                playbooks
                        tasks:任务
                        variables:变量
                        template:模板
                        handler:处理器
                        roles:角色
       
        基本结构:
                - hosts:webservers
                  remote_user:
                  tasks:
                  - task1
                        module_name:module_args
                  - task2               
               
        第一个playbook
        - hosts: webservers
          remote_user: root
          tasks:
          - name: create test group
                group: name=test system=yes gid=222
          - name: create test user
                user: name=test uid=222 group=test system=yes

        - hosts: dbservers
          remote_user: root
          tasks:
          - name: copy file to dbservers
                copy: src=/etc/inittab dest=/tmp/inittab.ans
               
       
        实例二:handlers的使用
        - hosts: webservers
          remote_user: root
          vars:                  ##定义变量
          - package: httpd
          - service: httpd
          tasks:
          - name: install httpd package
                yum: name={{ package }} state=latest    ##{{}}引用变量
          - name: install configuration file fro httpd
                copy: src=/root/httpd.conf dest=/etc/httpd/conf/httpd.conf
                notify:            ##定义配置文件修改后触发的handlers。
                - restart httpd      ##定义handlers的名称
          - name: start httpd service
                service: name={{ service }} state=started
          handlers:                         ##定义handlers
          - name: restart httpd##定义handlers的名称要于上面notify中定义的保持一致
                service: name={{service }} state=restarted
       
        条件测试:when:
        - hosts: all
          remote_user: root
          vars:
          - username: user10
          tasks:
          - name: create {{ username }}user
                user: name={{ username}}
                when: ansible_fqdn == "centos6.5"               
       
        迭代:
                调用:item
                定义循环列表:with_items
        - name: add server users
          user: name={{ item.user }} state=present groups={{ item.groups }}
          with_items:
           -{ name: 'testuser1',groups: 'whell' }
           -{ name: 'testuser2',groups: 'root' }
       
        tags:在playbook可以给某个任务定义一个标签,在执行playbook的时候可以使用--tags实现只运行某一个tasks。
        ansbile-playbook test.yml --tags="service"

页: [1]
查看完整版本: ansible-playbook