Ansible三 角色
第一章 Ansible 角色介绍
1.为什么需要使用角色
1.不太灵活,臃肿 2.全部写在一起,修改不方便 3.配置文件随便放,不标准
2.角色解决了什么问题
1.把剧本 拆分 拆分 拆分 2.解耦,结构更清晰,调试更方便
3.编写角色的最佳实践
1.初级阶段,不要直接写角色,先写好剧本,然后再拆分 2.一开始不要想一步到位,不用拆的很细,尤其是变量
第二章 角色目录规划
0.官方说明
https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html
1.目录说明
注意!这里的目录结构必须按照官方定义的要求来做!不是自己随便乱起!
tasks #存放主任务执行文件 handlers #存放handlers文件 files #存放需要发送的文件或压缩包 templates #存放jinja模版配置文件 vars #存放变量文件
第三章 实战演练-编写rsync角色
3.0 编写思路
1.先写好剧本 2.创建角色目录 3.拷贝需要发送的文件到指定目录 4.拆分剧本
3.1 编写剧本
- hosts: backup vars: user_id: ‘666‘ rsync_user: ‘www‘ tasks: #1.创建www组和www用户 - name: create_group group: name: "{{ rsync_user }}" gid: "{{ user_id }}" #2.创建www用户 - name: create_user user: name: "{{ rsync_user }}" uid: "{{ user_id }}" group: "{{ rsync_user }}" create_home: no shell: /sbin/nologin #3.创建数据目录并更改授权 - name: create_data file: path: "{{ item }}" state: directory owner: "{{ rsync_user }}" group: "{{ rsync_user }}" mode: ‘755‘ loop: - /data/ - /backup/ #4.安装rsync软件 - name: install_rsync yum: name: rsync state: latest #5.复制配置文件和密码文件 - name: copy pwd&conf copy: src: "{{ item.src }}" dest: /etc/ mode: "{{ item.mode }}" notify: - restart rsyncd loop: - { src: /root/script/rsync/rsyncd.conf, mode: ‘644‘} - { src: /root/script/rsync/rsync.passwd, mode: ‘600‘} #6.启动服务 - name: start systemd: name: rsyncd state: started enabled: yes #7.重启服务 handlers: - name: restart rsyncd systemd: name: rsyncd state: restarted
3.2 创建角色目录
[ ~]# cd /etc/ansible/roles/ [ /etc/ansible/roles]# mkdir rsync_server/{tasks,handlers,files,templates,vars} -p [ /etc/ansible/roles]# tree rsync_server/ rsync_server/ ├── files ├── handlers ├── tasks ├── templates └── vars
3.3 把剧本复制到tasks目录
├── tasks │ └── main.yaml
3.4 把配置文件复制到file目录
cp script/rsync/* /etc/ansible/roles/rsync_server/files/
3.5 拆分handlers
[ ~]# cat /etc/ansible/roles/rsync_server/handlers/main.yaml - name: restart rsyncd systemd: name: rsyncd state: restarted
3.6 拆分vars
[ ~]# cat /etc/ansible/roles/rsync_server/vars/main.yaml user_id: ‘666‘ rsync_user: ‘www‘
3.7 精简tasks任务文件
[ ~]# cat /etc/ansible/roles/rsync_server/tasks/main.yaml #1.创建www组和www用户 - name: create_group group: name: "{{ rsync_user }}" gid: "{{ user_id }}" #2.创建www用户 - name: create_user user: name: "{{ rsync_user }}" uid: "{{ user_id }}" group: "{{ rsync_user }}" create_home: no shell: /sbin/nologin #3.创建数据目录并更改授权 - name: create_data file: path: "{{ item }}" state: directory owner: "{{ rsync_user }}" group: "{{ rsync_user }}" mode: ‘755‘ loop: - /data/ - /backup/ #4.安装rsync软件 - name: install_rsync yum: name: rsync state: latest #5.复制配置文件和密码文件 - name: copy pwd&conf copy: src: "{{ item.src }}" dest: /etc/ mode: "{{ item.mode }}" notify: - restart rsyncd loop: - { src: rsyncd.conf, mode: ‘644‘} - { src: rsync.passwd, mode: ‘600‘} #6.启动服务 - name: start systemd: name: rsyncd state: started enabled: yes
3.8 编写调用文件
[ ~]# cat /etc/ansible/rsync_server.yaml - hosts: rsync_server roles: - rsync_server
3.9 编写主机清单
[ ~]# cat /etc/ansible/hosts [rsync_server] 172.16.1.41
3.10 调试运行
cd /etc/ansible/ ansible-playbook -C rsync_server.yaml ansible-playbook rsync_server.yaml
第四章 实战演练-编写sshd角色
4.1 编写思路
1.先拷贝配置文件到template目录下并重命名为j2 2.编写tasks文件 3.调试运行
4.2 创建角色目录
cd /etc/ansible/roles/ mkdir sshd/{tasks,handlers,files,templates,vars} -p
4.3 编写jinja模版文件
jinja模板注意:
1.模块必须是template 2.模版文件必须以.j2结尾 3.模版文件必须放在template目录下
关键配置:
#复制sshd配置文件到template文件夹下 Port {{ ssh_port }} ListenAddress {{ ansible_facts.eth1.ipv4.address }}
4.4 编写变量文件
[ /etc/ansible/roles/sshd]# cat vars/main.yaml ssh_port: ‘22‘
4.5 编写handlers文件
[ /etc/ansible/roles/sshd]# cat handlers/main.yaml - name: restart sshd systemd: name: sshd state: restarted
4.6 编写主任务文件
[ /etc/ansible/roles/sshd]# cat tasks/main.yaml #1.复制配置文件和密码文件 - name: 01_copy_sshd template: src: sshd_config.j2 dest: /etc/ssh/sshd_config mode: ‘600‘ backup: yes notify: - restart sshd #2.启动服务 - name: start systemd: name: sshd state: started enabled: yes
4.7 查看最终的目录
[root@m01 /etc/ansible/roles]# tree sshd/ sshd/ ├── files ├── handlers │ └── main.yaml ├── tasks │ └── main.yaml ├── templates │ └── sshd_config.j2 └── vars └── main.yaml
4.8.编写主调用文件
[root@m01 /etc/ansible/roles]# cat ../sshd.yaml - hosts: ssh roles: - sshd
第五章 实战演练-编写nfs角色
5.1 编写思路
1.先拷贝配置文件到template目录下并重命名为j2 2.编写handlers 3.编写tasks
5.2 创建角色目录
cd /etc/ansible/roles/ mkdir nfs_server/{tasks,handlers,files,templates,vars} -p
5.3 编写jinja模版文件
[ ~]# cat /etc/ansible/roles/nfs_server/templates/exports.j2 /data 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)
5.4 编写handlers文件
[ ~]# cat /etc/ansible/roles/nfs_server/handlers/main.yaml - name: restart nfs systemd: name: nfs state: restarted
5.5 编写主任务文件
[ ~]# cat /etc/ansible/roles/nfs_server/tasks/main.yaml #1.创建www组和www用户 - name: create_group group: name: www gid: 666 #2.创建www用户 - name: create_user user: name: www uid: 666 group: www create_home: no shell: /sbin/nologin #3.创建数据目录并更改授权 - name: create_data file: path: "{{ item }}" state: directory owner: www group: www mode: ‘755‘ loop: - /data/ - /backup/ #4.安装nfs软件 - name: install_nfs yum: name: nfs-utils state: latest #5.复制配置文件和密码文件 - name: copy_exports template: src: exports.j2 dest: /etc/exports notify: - restart nfs #6.启动服务 - name: start systemd: name: nfs state: started enabled: yes
5.6 编写调用文件
[ ~]# cat /etc/ansible/nfs_server.yaml - hosts: nfs roles: - nfs_server
第六章 实战演练-编写lsyncd服务
第七章 拆分init角色
7.0 编写思路
1.先分析以前写过所有的角色里重复的操作 2.把重复的操作内容单独写一个角色,例如:init 3.先备份一份以前写好的角色文件 4.精简以前的角色文件,删除重复的内容 5.调试,运行,检查
7.1 找出重复的操作
1.创建www组和www用户 2.创建www用户 3.创建数据目录并更改授权 4.安装rsync软件 4.安装nfs软件
7.2 创建角色目录
cd /etc/ansible/roles/ mkdir init/{tasks,handlers,files,templates,vars} -p
7.3 编写jinja模版文件
7.4 编写handlers文件
7.5 编写主任务文件
[ /etc/ansible]# cat /etc/ansible/roles/init/tasks/main.yaml #1.创建www组和www用户 - name: create_group group: name: www gid: 666 #2.创建www用户 - name: create_user user: name: www uid: 666 group: www create_home: no shell: /sbin/nologin #3.创建数据目录并更改授权 - name: create_data file: path: "{{ item }}" state: directory owner: www group: www mode: ‘755‘ loop: - /data/ - /backup/ #4.安装nfs软件 - name: install_soft yum: name: "{{ item }}" state: latest loop: - rsync - nfs-utils
第八章 拆分后的各个服务角色文件
8.1 拆分后的rsync角色
[ ~]# cat /etc/ansible/roles/rsync_server/tasks/main.yaml #1.复制配置文件和密码文件 - name: copy pwd&conf copy: src: "{{ item.src }}" dest: /etc/ mode: "{{ item.mode }}" notify: - restart rsyncd loop: - { src: rsyncd.conf, mode: ‘644‘} - { src: rsync.passwd, mode: ‘600‘} #2.启动服务 - name: start systemd: name: rsyncd state: started enabled: yes
8.2 拆分后的nfs角色
[ ~]# cat /etc/ansible/roles/nfs_server/tasks/main.yaml #1.复制配置文件和密码文件 - name: copy_exports template: src: exports.j2 dest: /etc/exports notify: - restart nfs #2.启动服务 - name: start systemd: name: nfs state: started enabled: yes
8.3 拆分后的lsyncd角色
8.4 调用文件
rsync
[ ~]# cat /etc/ansible/rsync_server.yaml - hosts: rsync_server roles: - init - rsync_server
nfs
[ ~]# cat /etc/ansible/nfs_server.yaml - hosts: nfs roles: - init - nfs_server
相关推荐
laisean 2020-09-27
onepiecedn 2020-10-29
guchengxinfen 2020-10-12
houdaiye 2020-09-23
逆时针 2020-08-19
pzczyy 2020-08-19
annan 2020-08-02
hpujsj 2020-07-26
annan 2020-07-18
逆时针 2020-06-21
annan 2020-06-20
逆时针 2020-06-14
逆时针 2020-06-14
awoyaoc 2020-06-12
逆时针 2020-06-09
piaotiejun 2020-06-07
awoyaoc 2020-06-07