1.理解roles在企业中的定位及写法
查看创建目录结构
ansible - galaxy list
指定新的位置
vim ansible.cfg
roles_path = ~/.ansible/roles
建立项目
cd roles/
ansible-galaxy init vsftpd
tree vsftpd/
编辑任务执行(顺序)文件
vim vsftpd/tasks/main.yml
---
# tasks file for vsftpd
- name: install vsftpd
dnf:
name: vsftpd
state: present
- name: start vsftpd
service:
name: vsftpd
enabled: yes
- name: set firewalld
firewalld:
service: ftp
state: enabled
permanent: yes
immediate: yes
- name: setup config file
template:
src: vsftpd.conf.j2
dest: /etc/vsftpd/vsftpd.conf
notify: restart vsftpd
编辑j2文件
vim vsftpd/templates/vsftpd.conf.j2
anonymous_enable={{state}}
编辑变量文件
vim vsftpd/vars/main.yml
---
# vars file for vsftpd
state: YES
编辑触发器文件
vim vsftpd/handlers/main.yml
---
# handlers file for vsftpd
- name: restart vsftpd
service:
name: vsftpd
state: restarted
编辑yaml文件
cd ..
vim vsftpd.yml
- name: create ftp server
hosts: all
roles:
- name: create vsftpd
role: vsftpd
运行
ansible-playbook vsftpd.yml
这样把各个部分都分开,各自书写,不用过于考虑缩进,而且更加直观。
2.关于roles执行的技巧
---- hosts : server2roles :- role : role1- role : role2var1 : value1 ## 此处变量会覆盖 roles 中的定义变量
vim vsftpd.yml
- name: create ftp server
hosts: all
roles:
- name: create vsftpd
role: vsftpdstate: 'NO'
---- hosts : server2roles :- role : role1 ## 角色任务pre_tasks : ##角色执行前执行的 play- tasks1tasks : ##普通任务- tasks2post_tasks : ##在角色和普通任务执行完毕后执行的 play- tasks3handlers :
3.role的下载和共享
ansible-galaxy collection install altispeed.web
将自己编写的打包以及怎么下载
tar zcf vsftpd.tar.gz vsftpd
mv vsftpd.tar.gz /tmp/
rm -fr vsftpd
vim vsftpd_role.yaml
- src: file:///tmp/vsftpd.tar.gz
name: westos
ansible-galaxy install -r vsftpd_role.yaml