ansible剧本知识
playbook的基础组件:
Hosts:运行指定任务的目标主机;
remoute_user:在远程主机上执行任务的用户;
sudo_user:
tasks:任务列表
模块,模块参数;
格式:
(1)action: module arguments
(2)module: arguments
注意:shell和command模块后面直接跟命令,而非key=value类的参数列表;
(1)某任务的状态在运行后为changed时,可通过“notify"通知给相应的handlers;
(2)任务可以通过”tags“打标签,而后可在ansible-playbook命令上使用-t指定进行调用
handlers:
任务,在特定条件下触发;接收到其它任务的通知时被触发:
notify: HANDLER TASK NAME
variables:
(1)facts:可直接调用;ansible默认获取主机的一些信息,自带的变量
注意:可使用setup模块直接获取目标主机的facters;
(2)用户自定义变量:
(a)在ansible-playbook命令行中的指定参数-e VARS
(b)在playbook中定义变量:
vars:
- var1: value1
- var2: value2
变量引用:{{ variable }}
(3)通过roles传递变量;
(4)通过hosts文件传递
(a)用户自定义变量
(i)向不同的主机传递不同的变量;
IP/HOSTNAME var1=value var2=value2
(ii)向组中的主机传递相同的变量;
[groupname:vars]
variable=value
(b)invertory参数
用于定义ansible远程连接目标主机时使用的参数,而非传递给playbook的变量
ansible_ssh_host
ansible_ssh_port
ansible_ssh_user
ansible_ssh_pass
ansbile_sudo_pass
模板:templates
文本文件,嵌套有脚本(使用模板编程语言编写)
Jinja2:
字面量:
字符串:使用单引号或双引号;
数字:整数,浮点数;
列表:[iteml,item2,…]
元组:(iteml,item2,…)
字典:{keyl:valuel,key2:value2,…}
布尔型:true/false
算术运算:
+,-,*,/,//,%,**
比较操作:
==,!=,>,>=,<,<=
逻辑运算:
and,or,not
条件测试:
when语句:在task中使用,jinja2的语法格式
循环:选代,需要重复执行的任务;
对迭代项的引用,固定变量名为item
而后,要在task中使用with_items给定要选代的元素列表;
列表方法:
字符串,字典
角色:
roles:定义在/etc/ansible/roles下
每个角色,以特定的层级目录结构进行组织:
files/:存放由copy或script模块等调用的文件;
templates/:template模块查找所需要模板文件的目录;
tasks/:至少应该包含一个名为main.yml的文件;其它的文件需要在此文件中通过include进行包含;
handlers/:至少应该包含一个名为main.yml的文件;其它的文件需要在此文件中通过include进行包含;
vars/:至少应该包含一个名为main.yml的文件;其它的文件需要在此文件中通过include进行包含;
meta/:至少应该包含一个名为main.yml的文件,定义当前角色的特殊设定及其依赖关系;其它的文件需要在此文件中通过include进行包含
default/:设定默认变量时使用此目录中的main.yml文件;
在playbook调用角色方法1
]# cat 9.yaml
- hosts: lb
remote_user: root
roles:
- nginx
- tomcat
- mysql
在playbook调用角色方法2:传递变量给角色
- hosts:
remote_user:
roles:
- { role: nginx,username: nginx }
键role用于指定角色名称;后续的k/v用于传递变量给角色;
还可以基于条件测试实现角色调用;
- hosts:
remote_user:
rotes:
-{ role:nginx,when: "ansible_distribution_major_version == ‘7’ “ }
ansible-pull
ansible-vcs:
https://github.com/andrewrothstein/ansible-vcs
本文来自博客园,作者:赛博狗尾草,转载请注明原文链接:https://www.cnblogs.com/gpysir/p/18869857
浙公网安备 33010602011771号