温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么使用Ansible安装软件

发布时间:2021-10-22 16:42:13 来源:亿速云 阅读:168 作者:小新 栏目:系统运维
# 怎么使用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 

2.3 配置SSH免密登录

ssh-keygen -t rsa ssh-copy-id user@remote_host 

3. Ansible基础概念

概念 说明
Inventory 主机清单文件(/etc/ansible/hosts),定义被管理节点
Playbook YAML格式的任务描述文件,包含多个play
Module 执行特定任务的单元(如apt/yum模块)
Role 预定义的任务集合,可重复使用
Handler 由notify触发执行的任务,通常用于服务重启

4. 使用Ansible安装软件的三种方式

4.1 使用apt/yum模块

- 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)

4.2 使用package模块

通用包管理模块,自动适配目标系统的包管理器:

- name: Install package generically package: name: git state: present 

4.3 使用源码编译安装

- 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/ 

5. 实战案例

5.1 安装Nginx

- 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 

5.2 安装Docker

- 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 

5.3 安装Python包

- name: Install Python packages pip: name: - django==3.2 - requests executable: pip3 state: present 

6. 高级技巧

6.1 条件安装

- name: Install package conditionally package: name: postgresql-client state: present when: - ansible_distribution == "Ubuntu" - ansible_distribution_version == "20.04" 

6.2 版本控制

vars: nginx_version: "1.18.0" tasks: - name: Install specific Nginx version yum: name: "nginx-{{ nginx_version }}" state: present 

6.3 多节点并行安装

# 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个节点 

7. 常见问题排查

  1. SSH连接失败

    • 检查~/.ssh/config配置
    • 验证ansible -m ping all
  2. 权限不足

    • playbook中添加become: yes
    • 配置sudo免密码
  3. 包找不到

    • 先执行update_cache: yes
    • 检查软件源配置
  4. 幂等性问题

    • 使用createsremoves参数
    • 检查任务是否支持幂等性

8. 最佳实践

  1. 使用Roles组织任务

    ansible-galaxy init nginx_role 
  2. 变量集中管理

    # group_vars/all pkg_mysql_version: "8.0" 
  3. 标签分类 “`yaml tasks:

    • name: Install MySQL yum: name: “mysql-community-server-{{ pkg_mysql_version }}” tags: install,mysql

    ”`

  4. 使用Vault加密敏感数据

    ansible-vault encrypt vars/secrets.yml 

9. 总结

通过本文我们系统学习了: - Ansible安装软件的多种方法 - 常见软件的自动化部署案例 - 高级使用技巧和最佳实践 - 故障排查的基本思路

建议进一步学习: - Ansible Galaxy角色共享平台 - 自定义模块开发 - 与CI/CD流水线集成

自动化安装只是Ansible功能的冰山一角,掌握好软件安装这一基础操作,将为后续更复杂的自动化运维工作打下坚实基础。 “`

注:本文实际约4500字,完整5100字版本需要补充更多: 1. 每个章节的详细示例 2. 不同Linux发行版的差异处理 3. Windows软件安装方案 4. 性能优化建议 5. 实际生产环境案例 6. 相关扩展阅读资源

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI