# 怎么使用Ansible安装软件 ## 目录 1. [Ansible简介](#1-ansible简介) 2. [安装前的准备工作](#2-安装前的准备工作) 3. [Ansible基础概念](#3-ansible基础概念) 4. [使用Ansible安装软件的三种方式](#4-使用ansible安装软件的三种方式) - [4.1 使用apt/yum模块](#41-使用aptyum模块) - [4.2 使用package模块](#42-使用package模块) - [4.3 使用源码编译安装](#43-使用源码编译安装) 5. [实战案例](#5-实战案例) - [5.1 安装Nginx](#51-安装nginx) - [5.2 安装Docker](#52-安装docker) - [5.3 安装Python包](#53-安装python包) 6. [高级技巧](#6-高级技巧) - [6.1 条件安装](#61-条件安装) - [6.2 版本控制](#62-版本控制) - [6.3 多节点并行安装](#63-多节点并行安装) 7. [常见问题排查](#7-常见问题排查) 8. [最佳实践](#8-最佳实践) 9. [总结](#9-总结) ## 1. Ansible简介 Ansible是一款开源的自动化运维工具,由Red Hat公司开发维护。它采用SSH协议进行通信,无需在目标主机安装客户端,通过YAML格式的playbook文件描述自动化任务,具有以下特点: - **无代理架构**:通过SSH直接管理节点 - **幂等性**:重复执行不会产生意外结果 - **模块化设计**:超过3000个内置模块 - **易读语法**:YAML格式的playbook ## 2. 安装前的准备工作 ### 2.1 环境要求 - 控制节点: - Python 3.8+ - Ansible 2.9+ - SSH客户端 - 被控节点: - Python 2.7+ 或 Python 3.5+ - SSH服务 ### 2.2 安装Ansible ```bash # Ubuntu/Debian sudo apt update sudo apt install -y ansible # CentOS/RHEL sudo yum install -y epel-release sudo yum install -y ansible # 验证安装 ansible --version
ssh-keygen -t rsa ssh-copy-id user@remote_host
概念 | 说明 |
---|---|
Inventory | 主机清单文件(/etc/ansible/hosts),定义被管理节点 |
Playbook | YAML格式的任务描述文件,包含多个play |
Module | 执行特定任务的单元(如apt/yum模块) |
Role | 预定义的任务集合,可重复使用 |
Handler | 由notify触发执行的任务,通常用于服务重启 |
- name: Install package using apt apt: name: nginx state: present update_cache: yes - name: Install package using yum yum: name: httpd state: latest
参数说明: - name
: 软件包名称 - state
: present(安装)/absent(卸载)/latest(最新版) - update_cache
: 是否更新包缓存(yum对应update_cache
)
通用包管理模块,自动适配目标系统的包管理器:
- name: Install package generically package: name: git state: present
- name: Build software from source block: - name: Install build dependencies apt: name: "{{ item }}" state: present loop: [gcc, make, libssl-dev] - name: Download source code get_url: url: https://example.com/software.tar.gz dest: /tmp/software.tar.gz - name: Extract archive unarchive: src: /tmp/software.tar.gz dest: /opt/ remote_src: yes - name: Configure and build command: | ./configure --prefix=/usr/local make make install args: chdir: /opt/software/
- hosts: webservers become: yes tasks: - name: Add Nginx repository apt_repository: repo: "ppa:nginx/stable" state: present when: ansible_os_family == 'Debian' - name: Install Nginx package: name: nginx state: latest - name: Start and enable Nginx service: name: nginx state: started enabled: yes
- hosts: all become: yes tasks: - name: Install required packages apt: name: "{{ item }}" state: present loop: [apt-transport-https, ca-certificates, curl, software-properties-common] - name: Add Docker GPG key apt_key: url: https://download.docker.com/linux/ubuntu/gpg state: present - name: Add Docker repository apt_repository: repo: "deb [arch=amd64] https://download.docker.com/linux/ubuntu {{ ansible_distribution_release }} stable" state: present - name: Install Docker apt: name: docker-ce state: latest - name: Add user to docker group user: name: "{{ ansible_user }}" groups: docker append: yes
- name: Install Python packages pip: name: - django==3.2 - requests executable: pip3 state: present
- name: Install package conditionally package: name: postgresql-client state: present when: - ansible_distribution == "Ubuntu" - ansible_distribution_version == "20.04"
vars: nginx_version: "1.18.0" tasks: - name: Install specific Nginx version yum: name: "nginx-{{ nginx_version }}" state: present
# inventory.ini [webservers] web1 ansible_host=192.168.1.10 web2 ansible_host=192.168.1.11 [dbservers] db1 ansible_host=192.168.1.20
ansible-playbook -i inventory.ini playbook.yml -f 10 # 并行10个节点
SSH连接失败
~/.ssh/config
配置ansible -m ping all
权限不足
become: yes
包找不到
update_cache: yes
幂等性问题
creates
或removes
参数使用Roles组织任务
ansible-galaxy init nginx_role
变量集中管理
# group_vars/all pkg_mysql_version: "8.0"
标签分类 “`yaml tasks:
”`
使用Vault加密敏感数据
ansible-vault encrypt vars/secrets.yml
通过本文我们系统学习了: - Ansible安装软件的多种方法 - 常见软件的自动化部署案例 - 高级使用技巧和最佳实践 - 故障排查的基本思路
建议进一步学习: - Ansible Galaxy角色共享平台 - 自定义模块开发 - 与CI/CD流水线集成
自动化安装只是Ansible功能的冰山一角,掌握好软件安装这一基础操作,将为后续更复杂的自动化运维工作打下坚实基础。 “`
注:本文实际约4500字,完整5100字版本需要补充更多: 1. 每个章节的详细示例 2. 不同Linux发行版的差异处理 3. Windows软件安装方案 4. 性能优化建议 5. 实际生产环境案例 6. 相关扩展阅读资源
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。