1. Ansible-Roles概述

如何使用别人的剧本? —- galaxy


1.1 roles是一个已知的目录结构 (ansible 开发者定义的目录编排方式 )

mkdir roles/nfs-server/{tasks,handlers,templates,files} -p

2.定义一个yaml文件,调用角色

  1. - hosts: webservers
  2. roles:
  3. - role: nfs-server

**

总结:

  1. # 创建role的步骤
  2. (1) 创建以roles命名的目录
  3. (2) roles目录中分别创建以各角色名称命名的目录,如webservers
  4. (3) 在每个角色命名的目录中分别创建fileshandlersmetataskstemplatesvars目录;用不到的目录可以创建为空目录,也可以不创建
  5. (4) playbook文件中,调用各角色


1.2 NFS示例(roles)

  1. [root@mananger roles]# mkdir roles/nfs-server/{tasks,handlers,templates} -p
  2. [root@mananger roles]# tree nfs-server/
  3. nfs-server/
  4. ├── handlers
  5. └── main.yml
  6. ├── tasks
  7. └── main.yml
  8. └── templates
  9. └── exports.j2
  10. [root@mananger roles]# cat nfs-server/tasks/main.yml
  11. - name: Installed NFS Server
  12. yum:
  13. name: nfs-utils
  14. state: present
  15. - name: Configure NFS Exports
  16. template:
  17. src: exports.j2
  18. dest: /etc/exports
  19. owner: root
  20. group: root
  21. mode: 0644
  22. notify: Restart NFS Server
  23. - name: Group Gdx 5678
  24. group:
  25. name: gdx
  26. gid: 5678
  27. - name: User Gdx 5678
  28. user:
  29. name: gdx
  30. uid: 5678
  31. group: '5678'
  32. shell: /sbin/nologin
  33. create_home: no
  34. - name: Create NFS Share Direcotry
  35. file:
  36. path: /data
  37. state: directory
  38. owner: gdx
  39. group: gdx
  40. - name: Systemctl NFS Server
  41. systemd:
  42. name: nfs
  43. state: started
  44. enabled: yes

[root@mananger roles]# cat nfs-server/handlers/main.yml

  1. - name: Restart NFS Server
  2. systemd:
  3. name: nfs
  4. state: restarted
  1. [root@mananger roles]# cat nfs-server/templates/exports.j2 #配置文件,可用变量,成为一个模板配置文件
  2. /data 172.16.1.0/24(rw,all_squash,anonuid=5678,anongid=5678)

[root@mananger roles]# cat top.yml

  1. - hosts: webservers
  2. roles:
  3. - 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目录下建立通用环境( 通用 | 独立 | 全面 )

  1. 各角色只写安装---配置----启动模块<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


2.2 角色编写