1. 首页 > Linux教程 > 正文

Linux教程FG407-Ansible模块详解

内容简介:本文风哥教程参考Linux官方文档、Red Hat Enterprise Linux官方文档、Ansible Automation Platform官方文档、Docker官方文档、Kubernetes官方文档和Podman官方文档等内容,详细介绍了相关技术的配置和使用方法。

<

风哥提示:

p>本文档介绍Ansible常用模块的详细用法。

Part01-文件管理模块

1.1 file模块

# file模块示例
[root@ansible ~]# cat > /fglinux/ansible/playbooks/file_module.yml << 'EOF' --- - name: 文件管理模块演示 hosts: webservers become: yes tasks: - name: 创建目录 file: path: /opt/fgedu/app state: directory owner: root group: root mode: '0755' - name: 创建文件 file: path: /opt/fgedu/app/config.ini state: touch owner: root group: root mode: '0644' - name: 创建符号链接 file: src: /opt/fgedu/app dest: /var/www/fgedu state: link - name: 删除文件 file: path: /tmp/old_file.txt state: absent - name: 递归设置目录权限 file: path: /opt/fgedu state: directory owner: root group: root mode: '0755' recurse: yes EOF # copy模块示例 [root@ansible ~]# cat > /fglinux/ansible/playbooks/copy_module.yml << 'EOF' --- - name: copy模块演示 hosts: webservers become: yes tasks: - name: 复制文件 copy: src: /etc/hosts dest: /tmp/hosts owner: root group: root mode: '0644' backup: yes - name: 复制目录 copy: src: /fglinux/scripts/ dest: /opt/fgedu/scripts/ owner: root group: root mode: '0755' - name: 写入内容到文件 copy: content: | # 配置文件 HOST=localhost PORT=8080 DEBUG=false dest: /opt/fgedu/app/config.ini owner: root group: root mode: '0644' - name: 验证文件内容 command: cat /opt/fgedu/app/config.ini register: file_content changed_when: false - name: 显示文件内容 debug: var: file_content.stdout_lines EOF # 执行copy模块 [root@ansible ~]# ansible-playbook /fglinux/ansible/playbooks/copy_module.yml PLAY [copy模块演示] ********************************************************** TASK [Gathering Facts] ****************************************************** ok: [web1.fgedu.net.cn] TASK [复制文件] ************************************************************* changed: [web1.fgedu.net.cn] TASK [复制目录] ************************************************************* changed: [web1.fgedu.net.cn] TASK [写入内容到文件] ******************************************************** changed: [web1.fgedu.net.cn] TASK [验证文件内容] ********************************************************** ok: [web1.学习交流加群风哥微信: itpux-comfgedu.net.cn] TASK [显示文件内容] ********************************************************** ok: [web1.fgedu.net.cn] => {
“file_content.stdout_lines”: [
“# 配置文件”,
“HOST=localhost”,
“PORT=8080”,
“DEBUG=false”
]
}

PLAY RECAP ******************************************************************
web1.fgedu.net.cn : ok=6 changed=3 unreachable=0 failed=0

Part02-包管理模块

2.1 dnf/yum模块

# dnf模块示例
[root@ansible ~]# cat > /fglinux/ansible/playbooks/package_module.yml << 'EOF' --- - name: 包管理模块演示 hosts: webservers become: yes tasks: - name: 安装单个软件包 dnf: name: nginx state: present - name: 安装多个软件包 dnf: name: - vim - wget - curl - htop state: present - name: 安装指定版本 dnf: name: nginx-1.20.1 state: present ignore_errors: yes - name: 更新所有软件包 dnf: name: '*' state: latest register: update_result - name: 显示更新结果 debug: var: update_result.changed - name: 卸载软件包 dnf: name: telnet state: absent - name: 安装开发工具组 dnf: name: "@Development Tools" state: present - name: 清理缓存 command: dnf clean all changed_when: true EOF # 执行包管理Playbook [root@ansible ~]# ansible-playbook /ffrom PG视频:www.itpux.comglinux/ansible/playbooks/package_module.yml PLAY [包管理模块演示] ******************************************************** TASK [Gathering Facts] ****************************************************** ok: [web1.fgedu.net.cn] TASK [安装单个软件包] ******************************************************** ok: [web1.fgedu.net.cn] TASK [安装多个软件包] ******************************************************** changed: [web1.fgedu.net.cn] TASK [安装指定版本] ********************************************************** ok: [web1.fgedu.net.cn] TASK [更新所有软件包] ******************************************************** changed: [web1.fgedu.net.cn] TASK [显示更新结果] ********************************************************** ok: [web1.fgedu.net.cn] => {
“update_result.changed”: true
}

TASK [卸载软件包] *********************************************更多学习教程公众号风哥教程itpux_com**************
changed: [web1.fgedu.net.cn]

TASK [安装开发工具组] ********************************************************
changed: [web1.fgedu.net.cn]

TASK [清理缓存] *************************************************************
changed: [web1.fgedu.net.cn]

PLAY RECAP ******************************************************************
web1.fgedu.net.cn : ok=9 changed=5 unreachable=0 failed=0

Part03-服务管理模块

3.1 service/systemd模块

# service模块示例
[root@ansible ~]# cat > /fglinux/ansible/playbooks/service_module.yml << 'EOF' --- - name: 服务管理模块演示 hosts: webservers become: yes tasks: - name: 启动服务 service: name: nginx state: started enabled: yes - name: 停止服务 service: name: httpd state: stopped ignore_errors: yes - name: 重启服务 service: name: nginx state: restarted - name: 重载服务配置 service: name: nginx state: reloaded - name: 检查服务状态 command: systemctl is-active nginx register: service_status changed_when: false - name: 显示服务状态 debug: msg: "Nginx服务状态: {{ service_status.stdout }}" - name: 使用systemd模块 systemd: name: nginx state: started enabled: yes daemon_reload: yes EOF # 执行服务管理Playbook [root@ansible ~]# ansible-playbook /fglinux/ansible/playbooks/service_module.更多视频教程www.fgedu.net.cnyml PLAY [服务管理模块演示] ****************************************************** TASK [Gathering Facts] ****************************************************** ok: [web1.fgedu.net.cn] TASK [启动服务] ************************************************************* changed: [web1.fgedu.net.cn] TASK [停止服务] ************************************************************* skipping: [web1.fgedu.net.cn] TASK [重启服务] ************************************************************* changed: [web1.fgedu.net.cn] TASK [重载服务配置] ********************************************************** changed: [web1.fgedu.net.cn] TASK [检查服务状态] ********************************************************** ok: [web1.fgedu.net.cn] TASK [显示服务状态] ********************************************************** ok: [web1.fgedu.net.cn] => {
“msg”: “Nginx服务状态: active”
}

TASK [使用systemd模块] ******************************************************
ok: [web1.fgedu.net.cn]

PLAY RECAP ******************************************************************
web1.fgedu.net.cn : ok=7 changed=3 unreachable=0 failed=0 skipped=1

风哥针对模块使用建议:

  • 优先使用模块而非命令执行
  • 了解模块的幂等性特性
  • 合理使用ignore_errors
  • 使用register获取执行结果
  • 查阅官方文档获取最新参数

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息