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的主要内容,如果未能解决你的问题,请参考以下文章

ansible-playbook 可用参数

ansible学习笔记7-playbooks之执行一个playbook