1. Ansible-Roles概述
如何使用别人的剧本? —- galaxy
1.1 roles是一个已知的目录结构 (ansible 开发者定义的目录编排方式 )
mkdir roles/nfs-server/{tasks,handlers,templates,files} -p
2.定义一个yaml文件,调用角色
- hosts: webserversroles:- 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 Serveryum:name: nfs-utilsstate: present- name: Configure NFS Exportstemplate:src: exports.j2dest: /etc/exportsowner: rootgroup: rootmode: 0644notify: Restart NFS Server- name: Group Gdx 5678group:name: gdxgid: 5678- name: User Gdx 5678user:name: gdxuid: 5678group: '5678'shell: /sbin/nologincreate_home: no- name: Create NFS Share Direcotryfile:path: /datastate: directoryowner: gdxgroup: gdx- name: Systemctl NFS Serversystemd:name: nfsstate: startedenabled: yes
[root@mananger roles]# cat nfs-server/handlers/main.yml
- name: Restart NFS Serversystemd:name: nfsstate: 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: webserversroles:- 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
