目录
和大多数编程语言一样,包含数字,下划线,字母 ,只能用下划线或字母开头 ansible内置的关键字不能作为变量名
全局: 从命令行或配置文件中设定的
paly: 在play和相关结构中设定的
主机: 由清单,事实收集或注册的任务
变量优先级设定: 狭窄范围有限与广域范围
编辑westos.yml文件,指定变量linuxfile,在编辑test.yml文件,如下
运行后即可在/mnt/中创建linuxfile
- name: tesk play
hosts: westos
tasks:
- name: create filef
file:
path: "{{ file }}"
state: touch
在定义主机变量和清单变量时使用
编辑inventory如下,编辑test.yml如下,运行test.yml即可在受控主机中创建filewestoslinux
group_vars 清单变量,目录中的文件名称与主机清单名称一致
host_vars 主机变量,目录中的文件名称与主机名称一致
测试如下
vim inventory
添加主机IP
[list]
192.168.43.204
vim test.yml
接着需写:group_vars清单变量,host_vars 主机变量
内容如下:
测试如下:
运行test.yml:执行成功。并查看受控机192.168.43.204中的用户user1如下:删除用户成功!
ansible-playbook westos.yml -e "name=linux"
事实变量是ansible在受控主机中自动检测出的变量,事实变量中还有与主机相关的信息
当需要使用主机相关信息时不需要采集赋值,直接调用即可
因为变量信息为系统信息所以不能随意设定仅为采集信息,故被成为事实变量
我们不知道系统参数的时候,可以直接去查看系统中的参数
ansible westos all –m, setup | less
例如:查看主机名(ansible_fqdn)
hostvars: ansible软件的内部信息
eg:ansible westost -m debug -a "var=hostvars"
group_names: 当前受管主机所在组
eg: ansible westos -m debug -a "var=group_names"
groups: 列出清单中所有的组和主机
eg: ansible localhost -m debug -a "var=groups"
inventory_hostname: 包含清单中配置的当前授管主机的名称
eg: ansible westos -m debug -a "var=inventory_hostname"
介绍 Jinja2是Python下一个被广泛应用的模版引擎 他的设计思想来源于Django的模板引擎, 并扩展了其语法和一系列强大的功能。 其中最显著的一个是增加了沙箱执行功能和可选的自动转义功能
编写循环内容
vim number.yml
NUMBER:
- 1
- 2
- 3
for循环和if判断
vim test.j2
{% for N in NUMBER %}
{%if N == 2%}
luck
{%endfor%}
{%if not N == 2%}
{{N}}
{%end%}
{%endfor%}
loop.index 循环迭代记数从1开始
loop.index0 循环迭代计数从0开始
vim testj2.yml
- name: test j2
hosts: westos
vars_files: number.yml
tasks:
- name: create /mnt/file
template:
src: test.j2
dest: /mnt/file
1. ansible-vault create linux 创建加密文件linux
westos
ansible-vault create linuxfile --vault-password-file=key
对新建文件linuxfile进行加密(linuxfile文件密码为key文件中的内容westos)
ansible-vault encrypt vsftpd.yml 对已经存在的vsftp.yml文件进行加密
ansible-vault encrypt linuxfile --vault-password-file=key
对现有文件linuxfile文件进行加密,并指定密钥为key文件
ansible-vault view vsftpd.yml 查看加密文件vsftpd.yml
ansible-vault view linuxfile --vault-password-file=key
查看已经加密的文件Linuxfile,密钥为key文件
ansible-vault edit linux 编辑加密文件linux
ansible-vault edit linuxfile --vault-password-file=key
编辑加密的文件linuxfile,密钥为key文件
ansible-vault decrypt linux linux文件永久解密
ansible-vault decrypt linuxfile --output=linuxfile
linuxfile文件解密保存为linuxfile
ansible-vault rekey linux 对linux文件进行更改密码
ansible-vault rekey linuxfile --new-vault-password-file=key1
对linuxfile文件进行更改密码,更改后的密码为key1文件