ansible-playbooks的了解

一.playbooks的简单介绍

 playbook是ansible用于配置,部署,和管理被控节点的剧本,通过playbook的详细描述,执行其中的一系列tasks,可以让远端主机达到预期的状态.playbook就像Ansible控制器给被控节点列出的的一系列to-do-list,而被控节点必须要完成。

二.使用场景:

1.需要大量的操作时候,执行的ad-hoc命令是不适合的,这时最好使用playbook。

2.就像执行shell命令与写shell脚本一样,也可以理解为批处理任务,不过playbook有自己的语法格式。

3.使用playbook你可以方便的重用这些代码,可以移植到不同的机器上面,像函数一样,最大化的利用代码

三.playbooks组织格式

1.YAML格式

YMAL格式是类似于JSON的文件格式,便于人理解和阅读,同时便于书写.,类似于半结构化数据,声明式配置;可读性较高的用来表达资料序列的格式,易于与脚本语言交互.

2.YAML语法特点

1)任何数据结构都用缩进来标识,可以嵌套

2)每一行都是一个键值对key:value,冒号隔开,若想在一行标识需要{}和,分隔格式

3)列表用 - 标识

4)文件的第一行应该以 ---(三个连字符)开始,表示YAML文件的开始

5)在同一行中,#之后的表示注释

3.playbooks的组成结构:

1)Tasks:任务列表,指远程主机将要执行的一系列的动作,核心就是ansible模块.

2)Variables:变量

3)Templates:包含模板语法的文本文件

4)Handlers:处理器,有某个条件触发执行操作

5)remoute_user:远程主机上执行任务的用户

6)Hosts:运行指定任务的目标主机

四.playbooks剧本编写:

10439291-b5aef517e97fdb14.png
简单nginx安装

五.针对yml文件加密:

ansible-vault encrypt  yml文件名

执行yml文件:

ansible-playbook yml文件 --ask-vault-pass

解密yml文件:

ansible-vault decrypt   yml文件名

六.变量种类:

1)facts:由远程主机发回的主机特有的属性信息,这些信息被保存在ansible变量中;无须声明,可直接调用;

2)自定义变量: 

 通过命令行传递:ansible-playbook test.yml –extra-vars"host=www user=test",通过roles传递

通过yml文件中添加vars添加变量

3)主机变量:定义在inventory中的主机之后的变量;直接传递给单个主机的变量

10439291-7f020498bc894e56.png
主机变量

七.playbooks执行命令:

执行yml文件:  ansible-playbook yml文件

指定tag执行: ansible-playbook  yml文件  -t 便签名称

指定变量:  ansible-playbook yml文件 –extra-vars"host=www user=test"

命令解释:

ansible-playbook web.yml  -e  servername=httpd  -t starthttpd

分析:

-e servername=httpd 指定变量的值为httpd

-t starthttpd 执行这个标签的操作

八.相关语句:

1)判断:   when: ansible_os_family == "Debian"

2)迭代:

- name: add several users

     user: name=` item`.`name ` state=present groups=` item`.`groups `

     with_items:

    -{ name: 'testuser1', groups: 'wheel' }

    -{ name: 'testuser2', groups: 'root' }

3)运行命令忽略结果: ignore_errors: True

4)handers:用于当关注的资源发生变化时采取一定的操作

“notify”这个action可用于在每个play的最后被触发,这样可以避免多次有改变发生时每次都执行指定的操作,取而代之,仅在所有的变化发生完成后一次性地执行指定操作.在notify中列出的操作称为handler,也即notify中调用handler中定义的操作.

代码:

   -name: template configuration file

     template: src=template.j2 dest=/etc/foo.conf

        notify:

         - restart memcached

          - restart apache    

handler是task列表,这些task与前述的task并没有本质上的不同。

                   handlers:

                       - name: restart memcached

                         service: name=memcached state=restarted

                       - name: restart apache

                         service: name=apache state=restarted

猜你喜欢

转载自blog.csdn.net/weixin_34206899/article/details/90797096