使用ansible角色
1、修改配置文件
vim ansible.cfg
添加
roles_path = roles
定义角色目录位置,这里写的是相对路径,也可以写绝对路径
2、创建角色相关目录
mkdir -p roles/http/tasks
vim main.yml
- roles是配置文件中指定存放角色总目录
- http 是创建的角色名称 自定义
- tasks 固定名称,表示存放角色任务的目录
- main.yml 固定名称 表示任务内容
3、创建playbook调用角色
vim test01.yml
使用 ansible-galaxy
#创建vsftpd角色
ansible-galaxy init roles/vsftpd
- defaults 存放变量,优先级低,一般不用
- files 存放静态数据,比如图片,视频,配置文件等
- handlers 存放提前定义好的任务,备用任务,不一定执行
- meta 存放作者、角色版本信息。可以不写
- tasks 存放执行任务,必须写内容
- templates 存放动态文档,比如带变量的模板
- tests
- vars 存放变量,优先级高,通常使用
tasks引用files vars
1、在files目录下创建文件
2、在vars目录下main.yml中填写变量
3、在tasks目录下main.yml中引用files vars,文件直接写名称即可,会自动去files目录下查找
4、编写playbook调用角色
在templates目录下编写动态文件
tasks中调用
下载网上的角色
1、创建下载角色的yml文件,name决定要安装的角色名称、src决定角色的下载路径
2、使用ansible-galaxy 安装角色
- -r 指定文件
- -p 指定安装目录 默认就是在roles目录中, 因为在ansible.cfg中roles_path指定好了
使用rhel-system-roles软件包安装角色
yum list | grep roles
yum install rhel-system-roles -y
#角色安装位置
ls /usr/share/ansible/roles/
#复制角色到 roles 目录
cp -r /usr/share/ansible/roles/rhel-system-roles.timesync/ ~/ansible/roles
#查看帮助文件
ls ~/ansible/roles/rhel-system-roles.timesync/README.md
loop工具
可以存多个值,利用名字是item的变量执行多次任务
item是固定写法
1、使用loop循环创建文件
当item前面有字符时 直接用双大括号
当item前面没有字符时 还需要用引号引起来
2、使用loop循环创建用户
3、创建用户并配置密码
注意密码需要加密
password: "{{item.myvar2 | password_hash('sha512')}}"
when
定义条件,满足条件后才会执行对应任务
== != > < >= <= in not in
is defined
is nor defined
and or
调用变量的时候不用{{}}
1、当操作系统等于RedHatyy 才会执行
block
可以将多个任务合并到一起,形成一个整体
条件不满足,任务都不执行
rescue 救援任务
当block任务失败后执行
always
无论block任务是否成功,都会执行
handler
可以单独定义备用任务,使用时在任务模块后面加notify 来引发执行,需要调用定义任务时的名称name
如果没有test目录,第一次执行剧本会喊出最后的ok,
但是第二次执行出现幂等性,没有出现changed状态就不会激活handler任务
handler 任务如果是相同任务名称被调用多次,只会执行一次,handler任务之后在剧本最后执行