1. Ansible-Roles概述
如何使用别人的剧本? —- galaxy
1.1 roles是一个已知的目录结构 (ansible 开发者定义的目录编排方式 )
mkdir roles/nfs-server/{tasks,handlers,templates,files} -p
2.定义一个yaml文件,调用角色
- hosts: webservers
roles:
- role: nfs-server
**
总结:
# 创建role的步骤
(1) 创建以roles命名的目录
(2) 在roles目录中分别创建以各角色名称命名的目录,如webservers等
(3) 在每个角色命名的目录中分别创建files、handlers、meta、tasks、templates和vars目录;用不到的目录可以创建为空目录,也可以不创建
(4) 在playbook文件中,调用各角色
1.2 NFS示例(roles)
[root@mananger roles]# mkdir roles/nfs-server/{tasks,handlers,templates} -p
[root@mananger roles]# tree nfs-server/
nfs-server/
├── handlers
│ └── main.yml
├── tasks
│ └── main.yml
└── templates
└── exports.j2
[root@mananger roles]# cat nfs-server/tasks/main.yml
- name: Installed NFS Server
yum:
name: nfs-utils
state: present
- name: Configure NFS Exports
template:
src: exports.j2
dest: /etc/exports
owner: root
group: root
mode: 0644
notify: Restart NFS Server
- name: Group Gdx 5678
group:
name: gdx
gid: 5678
- name: User Gdx 5678
user:
name: gdx
uid: 5678
group: '5678'
shell: /sbin/nologin
create_home: no
- name: Create NFS Share Direcotry
file:
path: /data
state: directory
owner: gdx
group: gdx
- name: Systemctl NFS Server
systemd:
name: nfs
state: started
enabled: yes
[root@mananger roles]# cat nfs-server/handlers/main.yml
- name: Restart NFS Server
systemd:
name: nfs
state: restarted
[root@mananger roles]# cat nfs-server/templates/exports.j2 #配置文件,可用变量,成为一个模板配置文件
/data 172.16.1.0/24(rw,all_squash,anonuid=5678,anongid=5678)
[root@mananger roles]# cat top.yml
- hosts: webservers
roles:
- role: nfs-server
2.针对大型项目使用Roles进行编排
2.1 项目规划
2.1.1基础环境:(全,所有主机都需要的)
1.1 yum源( base源epel源nginx源 ( web集群and lb集群 ) php源 (web集群) zabbix源)
1.2 基础软件包( vim wget unzip lrzsz tree net-tools rsync nfs-utils ntpdate )
1.3 关闭防火墙firewalld selinux
1.4 创建用户www—> uid 666 gid 666
1.5 内核参数
1.6 定时任务脚本 (脚本中的变量需要调整 ——> 使用 j2 的方式)
2.1.2 roles目录下建立通用环境( 通用 | 独立 | 全面 )
各角色只写安装---配置----启动模块<br />nginx<br />keepalived<br />php-fpm<br />mysql<br />redis<br />nfs<br />rsync<br />sersync<br />tomcat<br />python<br />zabbix-agent<br />filebeat<br />openvpn<br /> jms
2.1.3 业务调用
wordpress
wecenter
zrlog
phpmyadmin
**
2.1.4 ansible优化
4.1 key不检查
[ root@mananger roles ]#vim ansible.cfg
host_key _checking = False
forks = 10
4.2 确保所有 节点都是正常连接的
[root@mananger roles]#ansible all -m ping
4.3准备基础模块的
[root@mananger roles]# mkdir basic/{ tasks,templates,handlers,files}
ps: 找不到手册中的模块时:
[ root@mananger ~]# ansible-doc -l | grep xxx
获取fastcb变量:
[ root@mananger ~]# ansible localhost -m setup| less