美文网首页
Ansible-角色

Ansible-角色

作者: 1220 | 来源:发表于2019-09-17 02:12 被阅读0次

创建mysql角色目录

[root@m01 /etc/ansible/roles]# ansible-galaxy init mysql
- mysql was created successfully
[root@m01 /etc/ansible/roles]# ll
total 4
drwxr-xr-x 10 root root 135 Aug 26 00:13 mysql
[root@m01 /etc/ansible/roles]# cd mysql/
[root@m01 /etc/ansible/roles/mysql]# ll
total 4
drwxr-xr-x 2 root root   22 Aug 26 00:13 defaults
drwxr-xr-x 2 root root    6 Aug 26 00:13 files
drwxr-xr-x 2 root root   22 Aug 26 00:13 handlers
drwxr-xr-x 2 root root   22 Aug 26 00:13 meta
-rw-r--r-- 1 root root 1328 Aug 26 00:13 README.md
drwxr-xr-x 2 root root   22 Aug 26 00:13 tasks
drwxr-xr-x 2 root root    6 Aug 26 00:13 templates
drwxr-xr-x 2 root root   39 Aug 26 00:13 tests
drwxr-xr-x 2 root root   22 Aug 26 00:13 vars
[root@m01 /etc/ansible/roles/mysql]# 
role_name/:我们定义的role的名字
    file/:用于存放copy或script等模块调用的函数
    tasks/:用于定义各种task,此目录一定要有main.yml;其他文件需要main.yml包含调用
    handlers:用于定义各种handlers,此目录一定要有main.yml;其他文件需要main.yml包含调用
    vars:用于定义variables,此目录一定要有main.yml;其他文件需要main.yml包含调用
    templates/:存储由template模块调用的模板文本;
    meta/:定义当前角色的特殊设定及其依赖关系,此目录中至少应该有一个名为main.yml的文件;其它的文件需要由main.yml进行“包含”调用;
    default/:此目录中至少应该有一个名为main.yml的文件,用于设定默认变量;

handlers: 触发器

是task列表,这些task与前述的task并没有本质上的不同,用于当关注的资源发生七时,才会采取一定的操作

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

如下图:如果copy改变 就会触发handlers 重启httpd服务

image.png

变量:

1. 命令行定义变量:-e 'pkname=vsftpd'

image.png

2. 在playbook中定义变量vars

3. 在主机清单中/etc/ansible/hosts添加变量

[websrvs]中的变量优先级大于[websrvs:vars]中的变量优先级
image.png

tags:标签

tags标签指定某条任务执行,用于选择运行playbook中的部分代码。ansible具有幕等性,因此会自动跳过没有变化的部分,即便如此,有些代码为测试其确实没有发生变化的时间依然会非常地长。此时,如果确信其没有变化,就可以通过tags跳过此些代码片断

指定标签就会只执行带标签的动作,其余的会跳过


image.png

with_items: 迭代

特殊的变量迭代
当有需要重复性执行的任务时可以使用迭代机制。其使用格式为将需要迭代的内容定义为item变量引用并通过with_items语句来指明迭代的元素列表即可。


image.png
示例 
例如在被控端添加 2 个用户

方式1一般做法

name: add user testuser1 
user: name=testuser1 state=present groups=wheel
name: add user testuser2 
user: name=testuser2 state=present groups=wheel
方式2使用变量方式

name: add several users 
vars: 
user1: testuser1 
user2: testuser2 
user: name={{ user1 }} state=present groups=wheel 
user: name={{ user2 }} state=present groups=wheel
方式3使用迭代方式

创建两个用户

[root@linux-node1 create_user]# cat c_u.yml 
- hosts: db
remote_user: root
tasks:

- name: add several users
user: name={{ item }} state=present groups=wheel   
with_items:     
- testuser1
- testuser2
- name: add several users
user: name={{ item.name }} state=present groups={{ item.groups }}    
with_items:    
- { name: 'testuser1', groups: 'wheel' }    
- { name: 'testuser2', groups: 'root' }  

相关文章

  • Ansible-角色

    创建mysql角色目录 handlers: 触发器是task列表,这些task与前述的task并没有本质上的不同,...

  • ansible - 从入门到放弃

    ansible - 从入门到放弃 CLI cli 根据 ansible-* 切割,动态 import ansibl...

  • Ansible-模块

    1. ansible-模块 https://blog.csdn.net/qq_34646546/article/d...

  • ansible-模块

    模块详细说明:1.模块多个参数要用空格分隔2.使用commad模块一些特殊符号信息不能使用,如果非要执行请使用sh...

  • Ansible简介及安装配置过程

    ansible- 新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine...

  • ansible-批量管理服务

    1.ansible批量管理服务概述 实现批量管理 --- 并行管理 ---部署简单方便/应用简单方便 2.ansi...

  • ansible-创建、删除用户

    2020-10-29通过创建yaml文件创建用户,playbook模式,编写useradd.yaml写入以下内容(...

  • ansible-剧本编写-格式

    ansible剧本编写格式 ansible-playbook编写格式剧本开头,可以不写这两项必须要写:格式:- h...

  • ansible-使用密码文件

    2020-0921ansible不使用免密登录方式、使用密码文件执行同步1、自己创建一个类似于hosts文件2、打...

  • ansible-同步计划任务

    shell脚本中计划任务添加方法(echo "*/10 * * * * /usr/sbin/ntpdate ntp...

网友评论

      本文标题:Ansible-角色

      本文链接:https://www.haomeiwen.com/subject/ahrrectx.html