系统角色的使用
一、系统角色的使用
1、selinux角色
---
- hosts: 192.168.145.162
vars:
selinux_state: disabled
tasks:
- name: Apply SELinux role
block:
- name: role use
include_role:
name: selinux
rescue:
- name:
fail:
when: not selinux_reboot_required
- name: Restart managed host
reboot:
- name: Reapply SELinux role to complete changes
include_role:
name: selinux
---
- hosts: 192.168.145.162
vars:
PORT: 82
selinux_state: enforcing
selinux_ports:
- ports: '82'
setype: 'http_port_t'
proto: 'tcp'
state: 'present'
tasks:
- name:
yum:
name: httpd
state: present
- name:
include_role:
name: selinux
- name:
service:
name: httpd
state: started
2、timesync角色
---
- hosts: 192.168.145.162
vars:
timesync_ntp_servers:
- hostname: time1.aliyun.com
iburst: yes
power: true
pre_tasks:
- debug:
msg: 'k1'
changed_when: power
notify:
- h1
roles:
- timesync
tasks:
- debug:
msg: 'k2'
changed_when: power
notify:
- h1
post_tasks:
- debug:
msg: 'k3'
changed_when: power
notify:
- h1
handlers:
- name: h1
debug:
msg: h2
二、角色结构构建
1、角色创建流程
在Ansible中创建角色不需要特别的开发工具。 创建和使用角色包含三个步骤:
- 创建角色目录结构
- 定义角色内容
- 在playbook中使用的角色
2、创建角色目录结构
1.默认情况下,Ansible在Ansible Playbook所在目录的roles子目录中查找角色。这样,用户可以利用playbook和其他支持文件存储角色。
2.如果Ansible无法在该位置找到角色,它会按照顺序在Ansible配置设置roles_path所指定的目录中查找。此变量包含要搜索的目录的冒号分隔列表。此变量的默认值为:
~/.ansible/roles:/usr/share/ansible/roles:/etc/ansible/roles
3.这允许用户将角色安装到由多个项目共享的系统上。例如,用户可能将自己的角色安装在自己的主目录下的~/.ansible/roles子目录中,而系统可能将所有用户的角色安装在/usr/share/ansible/roles目录中。
2、使用mkdir
//角色结构
[root@localhost roles]# mkdir zs
[root@localhost roles]# cd zs/
[root@localhost zs]# mkdir defaults handlers files tasks vars meta templetes
[root@localhost roles]# tree
.
└── zs
├── defaults
├── files
├── handlers
├── meta
├── tasks
├── templetes
├── test
└── vars
3、使用ansible命令
[root@localhost roles]# ansible-galaxy init myroles
- Role myroles was created successfully
[root@localhost roles]# cd myroles/
[root@localhost myroles]# tree
.
├── defaults
│ └── main.yml
├── files
├── handlers
│ └── main.yml
├── meta
│ └── main.yml
├── README.md
├── tasks
│ └── main.yml
├── templates
├── tests
│ ├── inventory
│ └── test.yml
└── vars
└── main.yml
8 directories, 8 files