部署Ansible

部署Ansible

1. 构建Ansible清单

1.1 定义清单

清单定义Ansible将要管理的一批主机。这些主机也可以分配到组中,以进行集中管理。组可以包含子组,主机也可以是多个组的成员。清单还可以设置应用到它所定义的主机和组的变量。

可以通过两种方式定义主机清单。静态主机清单可以通过文本文件定义。动态主机清单可以根据需要使用外部信息提供程序通过脚本或其他程序来生成。

1.2 使用静态清单指定受管主机

静态清单文件是指定Ansible目标受管主机的文本文件。可以使用多种不同的格式编写此文件,包括INI样式或YAML。

在最简单的形式中。INI样式的静态清单文件是受管主机的主机名或IP地址的列表,每行一个:

[root@lch ~]# cd /etc/ansible/
[root@lch ansible]# ls
ansible.cfg  hosts  roles

但通常而言,可以将受管主机组织为主机组。通过主机组,可以更加有效的对一系列系统运行Ansible。这时,每一部分的开头为以中括号括起来的主机组名称。其后为该组中每一受管主机的主机名或IP地址,每行一个。

[webservers]
alpha.example.org
beta.example.org
192.168.1.100

www[001:006].example.com

[dbservers]
db01.intranet.mydomain.net
db02.intranet.mydomain.net
10.25.1.56

db-[99:101]-node.example.com

1.3 验证清单

若有疑问,可使用 ansible 命令验证计算机是否存在于清单中:

[root@lch ~]# cd /etc/ansible/
[root@lch ansible]# ls
ansible.cfg  hosts  roles
[root@lch ansible]# vi hosts 
## db-[99:101]-node.example.com
192.168.200.123   最后一排添加受管主机的ip地址
//验证
[root@lch ansible]# ansible 192.168.200.123 --list-hosts
  hosts (1):
    192.168.200.123
 //如果不存在则报下面错误
[root@lch ansible]# ansible 192.168.200.121 --list-hosts
[WARNING]: Could not match supplied host pattern, ignoring: 192.168.200.121
[WARNING]: No hosts matched, nothing to do
  hosts (0):

运行以下命令来列出指定组中的所有主机:

[root@lch ansible]# vi hosts 
[test] //组名
192.168.200.123
[root@lch ansible]# ansible test --list-hosts
  hosts (1):
    192.168.200.123

如果清单中含有名称相同的主机和主机组,ansible 命令将显示警告并以主机作为其目标。主机组则被忽略。

应对这种情况的方法有多种,其中最简单的是确保主机组不使用与清单中主机相同的名称。

//在test主机组里面添加test的主机进行验证
[root@lch ansible]# vi hosts
[test] 
test
192.168.200.123
root@lch ansible]# ansible test --list-hosts
[WARNING]: Found both group and host with same name: test
  hosts (1):
    test

1.4 覆盖清单的位置

/etc/ansible/hosts文件被视为系统的默认静态清单文件。不过,通常的做法是不使用该文件,而是在Ansible配置文件中为清单文件定义一个不同的位置。

1.5 构建Ansible清单

修改默认清单文件**/etc/ansible/hosts**添加以下内容:

172.16.103.129

[webservers]
172.16.103.130

172.16.103.131

使用以下命令列出默认清单文件中的所有受管主机:

ansible all --list-hosts

使用以下命令列出不属于任何组的受管主机:

ansible ungrouped --list-hosts

使用以下命令列出属于某组的受管主机:

ansible webservers --list-hosts

1.6 自定义清单文件

在/etc/ansible/目录中,创建一个名为inventory的自定义静态清单文件。

服务器清单规格

主机IP 用途 位置 运行环境
172.16.103.129 web服务器 北京 测试
172.16.103.130 web服务器 上海 生产
172.16.103.131 数据库服务器 上海 生产

编辑/etc/ansible/inventory文件,将上表中所列出的主机加入受管主机序列。

[root@lch ansible]# vi inventory
[webservers]
web01.example.com

//设置192.168.200.5的主机名为web01
[root@control ~]# hostnamectl set-hostname web01.example.com
[root@control ~]# bash
[root@web01 ~]# 

//设置192.168.200.8的主机名为lch
[root@lch ansible]#  hostnamectl set-hostname lch
[root@lch ansible]# bash
[root@lch ansible]# 

[root@control ~]# vi /etc/hosts //此文件添加服务器的ip和域名
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.200.5 web01.example.com
//测试通信
[root@lch ansible]# ping web01.example.com
PING web01.example.com (192.168.200.5) 56(84) bytes of data.
64 bytes from web01.example.com (192.168.
<think>我们被要求用中文回答,并在最后提出3-5个相关问题,以“§§相关问题§§”开头。用户的问题是“部署ansible”,我们需要提供在CentOS上部署Ansible的步骤。注意:Ansible通常通过包管理器安装,CentOS7和8的步骤可能略有不同。我们将提供在CentOS7和8上部署Ansible的步骤,并注意EPEL仓库的启用。同时,考虑到用户可能对Ansible版本有要求,我们也会提到如何安装特定版本。由于问题比较开放,我们假设用户需要基本的部署步骤。步骤:1.对于CentOS7:-启用EPEL仓库-安装Ansible2.对于CentOS8:-启用EPEL仓库-使用dnf安装Ansible3.也可以使用pip安装(适用于需要最新版本的情况)我们还会简要提及如何验证安装。最后,按照要求提出3-5个相关问题。注意:回答末尾必须输出“§§相关问题§§”并紧接着相关问题,禁止换行分散。</think>在CentOS系统上部署Ansible的完整流程如下,包含基础安装、配置优化和验证步骤: --- ### **一、基础环境准备** 1. **系统要求**: - CentOS 7/8(推荐CentOS 8 Stream) - Python 3.6+(Ansible 2.9+要求) 2. **更新系统**: ```bash sudo yum update -y sudo reboot # 建议重启应用更新 ``` 3. **安装Python 3**(CentOS 7需要): ```bash sudo yum install -y python3 python3-pip ``` --- ### **二、Ansible安装方法** #### **方法1:通过EPEL仓库安装(推荐)** ```bash # 安装EPEL仓库 sudo yum install -y epel-release # 安装Ansible sudo yum install -y ansible # 验证安装 ansible --version ``` #### **方法2:通过pip安装(获取最新版)** ```bash sudo pip3 install --upgrade pip sudo pip3 install ansible # 配置环境变量 echo 'export PATH=$PATH:~/.local/bin' >> ~/.bashrc source ~/.bashrc ``` --- ### **三、核心配置文件** 1. **主配置文件** (`/etc/ansible/ansible.cfg`): ```ini [defaults] inventory = /etc/ansible/hosts # 主机清单路径 remote_user = ansible-user # 默认远程用户 host_key_checking = False # 禁用SSH主机密钥验证 ``` 2. **主机清单文件** (`/etc/ansible/hosts`): ```ini [web_servers] 192.168.1.101 ansible_user=admin 192.168.1.102 [db_servers] db01.example.com db02.example.com [all:vars] ansible_python_interpreter=/usr/bin/python3 ``` --- ### **四、SSH免密登录配置** 1. **生成SSH密钥**: ```bash ssh-keygen -t rsa -b 4096 -N "" -f ~/.ssh/ansible_id ``` 2. **分发公钥到目标主机**: ```bash ssh-copy-id -i ~/.ssh/ansible_id.pub user@target_host ``` 3. **配置SSH客户端** (`~/.ssh/config`): ```config Host * IdentityFile ~/.ssh/ansible_id User ansible-user StrictHostKeyChecking no ``` --- ### **五、验证部署** 1. **测试主机连通性**: ```bash ansible all -m ping ``` 2. **执行测试命令**: ```bash ansible web_servers -a "uptime" ``` 3. **检查Ansible组件**: ```bash # 查看可用模块 ansible-doc -l # 查看配置路径 ansible-config dump | grep DEFAULT_MODULE_PATH ``` --- ### **六、生产环境优化** 1. **安全加固**: ```bash sudo chmod 600 /etc/ansible/ansible.cfg sudo chown root:ansible /etc/ansible -R ``` 2. **启用日志审计**: ```ini # 在ansible.cfg中添加 [defaults] log_path = /var/log/ansible.log ``` 3. **性能调优**: ```ini forks = 50 # 并发进程数 gathering = smart # 智能收集facts pipelining = True # 启用管道加速 ``` --- ### **七、版本管理建议** | 组件 | 推荐版本 | 升级命令 | |------------|--------------------|------------------------------| | Ansible | ≥2.12 | `sudo pip3 install -U ansible` | | Python | 3.8+ | `sudo yum install python38` | | SSH | OpenSSH 8.0+ | `sudo yum update openssh` | > 💡 **提示**:使用`ansible-galaxy collection install community.general`安装常用社区模块
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值