内容简介:本文风哥教程参考Linux官方文档、Red Hat Enterprise Linux官方文档、Ansible Automation Platform官方文档、Docker官方文档、Kubernetes官方文档和Podman官方文档等内容,详细介绍了相关技术的配置和使用方法。
本文档风哥主要介绍Ansible自动化运维的进阶技巧,更多视频教程www.fgedu.net.cn包括角色开发、动态清单、最佳实践等内容。
Part01-基础概念与理论知识
1.1 Ansible进阶特性
Roles:角色复用
Dynamic Inventory:动态清单
Vault:加密敏感数据
Collections:内容集合
Part02-生产环境规划与建议
2.1 Ansible最佳实践
production/
staging/
group_vars/
host_vars/
roles/
site.yml
# 最佳实践
1. 使用角色组织代码
2. 使用变量分离配置
3. 使用Vault加密敏感信息
4. 使用版本控制管理Playbook
Part03-生产环境项目实施方案
3.1 角色开发
$ ansible-galaxy init nginx
– nginx was created successfully
$ tree nginx/
nginx/
├── defaults
│ └── main.yml
├── files
├── handlers
│ └── main.yml
├── meta
│ └── main.yml
├── tasks
│ └── main.yml
├── templates
├── tests
│ ├── inventory
│ └── test.yml
└── vars
└── main.yml
# 编写任务
$ cat > nginx/tasks/main.yml << 'EOF'
---
- name: Install nginx
dnf:
name: nginx
state: present
- name: Copy nginx config
template:
src: nginx.conf.j2
d学习交流加群风哥微信: itpux-comest: /etc/nginx/nginx.conf
notify: restart nginx
- name: Start nginx
systemd:
name: nginx
state: started
enabled: yes
EOF
# 编写处理器
$ cat > nginx/handlers/main.yml << 'EOF'
---
- name: restart nginx
systemd:
name: nginfrom PG视频:www.itpux.comx
state: restarted
EOF
# 编写模板
$ cat > nginx/templates/nginx.conf.j2 << 'EOF'
user nginx;
worker_processes {{ ansible_processor_vcpus }};
...
EOF
3.2 使用Ansible Vault
$ ansible-vault create secrets.yml
New Vault password:
Confirm New Vault password:
# 编辑加密文件
$ ansible-vault edit secrets.yml
# 加密已有文件
$ ansible-vault encrypt plain.yml
# 解密文件
$ ansible-vault decrypt secrets.yml
# 使用加密变量
$ cat > playbook.yml << 'EOF'
---
- name: Deploy with secrets
hosts: all
vars_files:
- secrets.yml
tasks:
- name: Create user
user:
name: "{{ db_user }}"
password: "{{ db_password }}"
EOF
# 运行Playbook
$ ansible-playbook playbook.yml --ask-vault-pass
Part04-生产案例与实战讲解
4.1 案例:Web服务器集群部署
# 1. 创建项目目录
$ mkdir -p web-cluster/{group_vars,host_vars,roles}
# 2. 创建清单文件
$ cat > inventory << 'EOF'
[webservers]
web[01:10].fgedu.net.cn
[dbservers]
db01.fgedu.net.cn
EOF
# 3. 创建角色
$ ansible-galaxy init web-server
$ ansible-galaxy init db-server
# 4. 编写主Playbook
$ cat > site.yml << 'EOF'
---
- name: Deploy web servers
hosts: webservers
roles:
- web-server
- name: Deploy database servers
hosts: dbservers
roles:
- db-server
EOF
# 5. 执行部署
$ ansible-playbook -i inventory site.yml
# 6. 验证部署
$ ansible all -i inventory -m shell -a "systemctl is-active nginx"
风哥提示:
Part05-风哥经验总结与分享
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
