ansible-playbook
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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"
以上是关于ansible-playbook的主要内容,如果未能解决你的问题,请参考以下文章