使用ansible角色

1、修改配置文件

vim ansible.cfg

添加

roles_path = roles
定义角色目录位置,这里写的是相对路径,也可以写绝对路径

ansible 从目标节点拿文件夹_ansible 从目标节点拿文件夹

2、创建角色相关目录

mkdir -p roles/http/tasks

ansible 从目标节点拿文件夹_配置文件_02

vim main.yml

ansible 从目标节点拿文件夹_ansible 从目标节点拿文件夹_03


 

  • roles是配置文件中指定存放角色总目录
  • http   是创建的角色名称  自定义
  • tasks    固定名称,表示存放角色任务的目录
  • main.yml    固定名称   表示任务内容

3、创建playbook调用角色

vim test01.yml

ansible 从目标节点拿文件夹_RHCE_04

使用 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决定角色的下载路径

ansible 从目标节点拿文件夹_创建文件_05

2、使用ansible-galaxy 安装角色

ansible 从目标节点拿文件夹_配置文件_06

  • -r 指定文件
  • -p 指定安装目录  默认就是在roles目录中, 因为在ansible.cfg中roles_path指定好了

使用rhel-system-roles软件包安装角色

yum list | grep roles

ansible 从目标节点拿文件夹_创建文件_07


 

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循环创建文件

ansible 从目标节点拿文件夹_RHCE_08

当item前面有字符时 直接用双大括号 

当item前面没有字符时 还需要用引号引起来

2、使用loop循环创建用户

ansible 从目标节点拿文件夹_创建文件_09

3、创建用户并配置密码

ansible 从目标节点拿文件夹_创建文件_10

注意密码需要加密

password: "{{item.myvar2 | password_hash('sha512')}}"
 

when

定义条件,满足条件后才会执行对应任务

==   !=  > <  >= <=  in  not in 

is defined

is nor defined

and  or 

调用变量的时候不用{{}}

1、当操作系统等于RedHatyy  才会执行

ansible 从目标节点拿文件夹_创建文件_11

block

可以将多个任务合并到一起,形成一个整体

条件不满足,任务都不执行

ansible 从目标节点拿文件夹_RHCE_12

rescue 救援任务

当block任务失败后执行

always  

无论block任务是否成功,都会执行

ansible 从目标节点拿文件夹_ansible 从目标节点拿文件夹_13

handler  

可以单独定义备用任务,使用时在任务模块后面加notify 来引发执行,需要调用定义任务时的名称name

ansible 从目标节点拿文件夹_vim_14

如果没有test目录,第一次执行剧本会喊出最后的ok,

ansible 从目标节点拿文件夹_RHCE_15

但是第二次执行出现幂等性,没有出现changed状态就不会激活handler任务

ansible 从目标节点拿文件夹_创建文件_16

handler 任务如果是相同任务名称被调用多次,只会执行一次,handler任务之后在剧本最后执行