内容简介:本文风哥教程参考Linux官方文档、Red Hat Enterprise Linux官方文档、Ansible Automation Platform官方文档、Docker官方文档、Kubernetes官方文档和Podman官方文档等内容,详细介绍了相关技术的配置和使用方法。
风哥提示:
本文档介绍Ansible Playbook的编写方法和最佳实践。
Part01-Playbook基础
1.1 Playbook结构
[root@ansible ~]# mkdir -p /fglinux/ansible/playbooks
[root@ansible ~]# cat > /fglinux/ansible/playbooks/basic.yml << 'EOF' --- - name: 基础系统配置 hosts: webservers become: yes vars: http_port: 80 max_clients: 200 tasks: - name: 安装常用软件包 dnf: name: - vim - wget - curl - net-tools - htop state: present - name: 创建应用目录 file: path: /opt/fgedu state: directory owner: root group: root mode: '0755' - name: 配置系统参数 sysctl: name: "{{ item.name }}" value: "{{ item.value }}" state: present loop: - { name: 'net.core.somaxconn', value: '65535' } - { name: 'net.ipv4.tcp_max_syn_backlog', value: '65535' } - { name: 'vm.swappiness', value: '10' } - name: 配置文件描述符限制 pam_limits: domain: '*' limit_type: "{{ item.type }}" limit_item: "{{ item.item }}" value: "{{ item.value }}" loop: - { type: 'soft', item: 'nofile', value: '65535' } - { type: 'hard', item: 'nofile', value: '65535' } - name: 显示完成信息 debug: msg: "系统配置完成,主机: {{ inventory_hostname }}" EOF # 执行Playbook [root@ansible ~]# ansible-playbook /fglinux/ansible/playbooks/basic.yml PLAY [基础系统配置] ********************************************************** TASK [Gathering Facts] ****************************************************** ok: [web1.fgedu.net.cn] ok: [web2.fgedu.net.cn] TASK [安装常用软件包] ********************************************************** changed: [web1.学习交流加群学习交流加群风哥QQ113257174风哥微信: itpux-comfgedu.net.cn] changed: [web2.fgedu.net.cn] TASK [创建应用目录] ********************************************************** changed: [web1.fgedu.net.cn] changed: [web2.fgedu.net.cn] TASK [配置系统参数] ********************************************************** changed: [web1.fgedu.net.cn] => (item={‘name’: ‘net.core.somaxc更多学习教程公众号风哥教程itpux_comonn’, ‘value’: ‘65535’})
changed: [web2.fgedu.net.cn] => (item={‘name’: ‘net.core.somaxconn’, ‘value’: ‘65535’})
changed: [web1.fgedu.net.cn] => (item={‘name’: ‘net.ipv4.tcp_max_syn_backlog’, ‘value’: ‘65535’})
changed: [web2.fgedu.net.cn] => (item={‘name’: ‘net.ipv4.tcp_max_syn_backlog’, ‘value’: ‘65535’})
changed: [web1.fgedu.net.cn] => (item={‘name’: ‘vm.swappiness’, ‘value’: ’10’})
changed: [web2.fgedu.net.cn] => (item={‘name’: ‘vm.swappiness’, ‘value’: ’10’})
TASK [配置文件描述符限制] **********************************************************
changed: [web1.fgedu.net.cn] => (item={‘type’: ‘soft’, ‘item’: ‘nofile’, ‘value’: ‘65535’})
changed: [web2.fgedu.net.cn] => (item={‘type’: ‘soft’, ‘item’: ‘nofile’, ‘value’: ‘65535’})
changed: [web1.fgedu.net.cn] => (item={‘type’: ‘hard’, ‘item’: ‘nofile’, ‘value’: ‘65535’})
changed: [web2.fgedu.net.cn] => (item={‘type’: ‘hard’, ‘item’: ‘nofile’, ‘value’: ‘65535’})
TASK [显示完成信息] **********************************************************
ok: [web1.fgedu.net.cn] => {
“msg”: “系统配置完成,主机: web1.fgedu.net.cn”
}
ok: [web2.fgedu.net.cn] => {
“msg”: “系统配置完成,主机: web2.更多视频教程www.fgedu.net.cnfgedu.net.cn”
}
PLAY RECAfrom PG视频:www.itpux.comP ******************************************************************
web1.fgedu.net.cn : ok=6 changed=4 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
web2.fgedu.net.cn : ok=6 changed=4 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Part02-变量与条件
2.1 变量使用
[root@ansible ~]# cat > /fglinux/ansible/vars/main.yml << 'EOF' app_name: fgedu_app app_version: 1.0.0 app_port: 8080 app_user: fgedu app_group: fgedu database: host: 192.168.1.30 port: 3306 name: fgedudb user: fgedu password: Password@123 directories: - /opt/fgedu - /opt/fgedu/logs - /opt/fgedu/data - /opt/fgedu/config packages: - nginx - mysql - redis - python3 EOF # 使用变量的Playbook [root@ansible ~]# cat > /fglinux/ansible/playbooks/with_vars.yml << 'EOF' --- - name: 使用变量部署应用 hosts: webservers become: yes vars_files: - ../vars/main.yml tasks: - name: 创建应用用户 user: name: "{{ app_user }}" group: "{{ app_group }}" shell: /bin/bash create_home: yes - name: 创建目录结构 file: path: "{{ item }}" state: directory owner: "{{ app_user }}" group: "{{ app_group }}" mode: '0755' loop: "{{ directories }}" - name: 安装软件包 dnf: name: "{{ packages }}" state: present - name: 配置数据库连接 template: src: ../templates/db_config.j2 dest: /opt/fgedu/config/database.yml owner: "{{ app_user }}" group: "{{ app_group }}" mode: '0600' - name: 显示配置信息 debug: msg: | 应用: {{ app_name }} v{{ app_version }} 数据库: {{ database.host }}:{{ database.port }}/{{ database.name }} EOF # 创建配置模板 [root@ansible ~]# mkdir -p /fglinux/ansible/templates [root@ansible ~]# cat > /fglinux/ansible/templates/db_config.j2 << 'EOF' # 数据库配置文件 # Generated by Ansible # from:www.itpux.com.qq113257174.wx:itpux-com database: host: {{ database.host }} port: {{ database.port }} name: {{ database.name }} user: {{ database.user }} password: {{ database.password }} pool: min_size: 5 max_size: 20 timeout: 30 EOF # 执行带变量的Playbook [root@ansible ~]# ansible-playbook /fglinux/ansible/playbooks/with_vars.yml PLAY [使用变量部署应用] ****************************************************** TASK [Gathering Facts] ****************************************************** ok: [web1.fgedu.net.cn] TASK [创建应用用户] ********************************************************** changed: [web1.fgedu.net.cn] TASK [创建目录结构] ********************************************************** changed: [web1.fgedu.net.cn] => (item=/opt/fgedu)
changed: [web1.fgedu.net.cn] => (item=/opt/fgedu/logs)
changed: [web1.fgedu.net.cn] => (item=/opt/fgedu/data)
changed: [web1.fgedu.net.cn] => (item=/opt/fgedu/config)
TASK [安装软件包] **********************************************************
changed: [web1.fgedu.net.cn]
TASK [配置数据库连接] **********************************************************
changed: [web1.fgedu.net.cn]
TASK [显示配置信息] **********************************************************
ok: [web1.fgedu.net.cn] => {
“msg”: “应用: fgedu_app v1.0.0\n数据库: 192.168.1.30:3306/fgedudb”
}
PLAY RECAP ******************************************************************
web1.fgedu.net.cn : ok=6 changed=5 unreachable=0 failed=0
- 使用有意义的任务名称
- 合理组织变量文件
- 使用模板管理配置文件
- 添加适当的条件判断
- 使用handlers处理变更
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
