简介:ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
本实验由三台主机进行测试,其中一台作为管理机,另外两台被管主机
文章目录
一、ansible安装
1.1 安装epel扩展源
yum install -y epel-release.noarch
1.2 安装ansible
yum install -y ansible
查看ansible版本
安装完成后,已经多出很多ansible命令了
二、配置主机
2.1 配置hosts文件
添加另外两台主机信息
vi /etc/ansible/hosts
执行ansible命令,其实这种情况把密码明文形式写在配置文件了,不适用
ansible 10.49.33.58 -m ping
第二种配置文件仅一个ip,执行命令要输入一边密码,多主机维护时不方便
ansible 10.49.33.58 -m ping -k
输入密码
第三种情况,可以生成密钥管理,不用输入密码,管理方便
生产密钥
ssh-keygen
生成的密钥默认放在/root/.ssh/
ll /root/.ssh
2.2 管理密钥
id_rsa是私钥
id_rsa.pub是公钥,需要把公钥发送给被管主机
使用模式:
ssh-copy-id [-i [identity_file] ] [user@]machine
-i:指定公钥文件
把本地的ssh公钥文件安装到远程主机对应的账户下:
ssh-copy-id user@server
ssh-copy-id -i ~/.ssh/id_rsa.pub user@server
ssh-copy-id -i /root/.ssh/id_rsa.pub root@10.49.33.58
执行成功之后,我们在目标机器上查看/root/.ssh目录已经生成,并且多了一个名为authorized_keys的文件,里面保存的正是原机器上ssh-keygen生成的id_rsa.pub的内容
按照系统提示尝试登录10.49.33.58
ssh root@10.49.33.58
直接进入,不再需要密码
同理,把公钥传到10.49.33.59中
ssh-copy-id -i /root/.ssh/id_rsa.pub root@10.49.33.59
公钥认证的相关操作配置完成,可以通过ansible主机免密码连接到这些主机,极大的提高了安全性
若是需要将私钥复制到另一台机器10.49.33.141使用
cd /root/.ssh/
scp id_rsa root@10.49.33.141:/root
输入10.49.33.141的密码,传输完成
进入10.49.33.141服务器
尝试连接被管主机
ssh 10.49.33.59
免密连接完成
2.3 被管主机分组
还可以对不同主机进行分组,默认配置文件也有提示
ansible test -m ping
文件/etc/ansible/ansible.cfg下
#host_key_checking= False
取消注释,这样就不用每次输入yes/no选项
至此,简单的ansible搭建管理完成
三、ansible组成介绍
3.1 查看ansible目录文件
tree /etc/ansible/
/etc/ansible/
├── ansible.cfg # 配置文件
├── hosts # 主仓库 用来存储需要管理的远程主机的相关信息
└── roles # 存放角色的目录
3.2 Ansible命令参数详解
Ansible命令语法如下:
ansible [-i 主机文件] [-f 批次] [组名] [-m 模块名称] [-a 模块参数]
Ansible详细参数如下:
-i inventory_file——指定了主机文件,如果不指定,则默认为/etc/ansible/hosts文件,在主机文件中,定义了Ansible要控制的主机IP或域名,及其用户、密码
-f 10——表示指定开启同步进程的个数
-m module——表示Ansible要调用的模块
-a ——指定模块的参数,可以是命令等等
-sudo ——表示使用ansible获得sudo权限
-k ——表示ansible使用的SSH密码
-u username——表示指定Ansible执行的用户
-C —— 表示命令测试
3.3 ansible模块功能查看
Ansible的模块有很多,查看所有ansible的模块,使用命令:
ansible-doc -l
有非常多的模块,左边的是模块名称,右边的是对模块功能的描述
详细查看一个模块的功能,并且查看其参数,可以执行命令:
ansible-doc -s [模块名]
3.4 hosts文件
hosts文件一般存放我们的被管理主机信息。主机列表清单,也叫Inventory。所有被管理的主机都需要定义在该文件中。如果不想使用默认清单的话可以用-i选项指定自定义的清单文件,防止多人混合使用一个主机清单。如果没有定义在主机列表文件中,执行命令会提示“No hosts matched”
谢谢
要使用Ansible批量扩展分区,您可以使用Ansible的parted模块来完成。下面是一个示例Playbook,演示如何使用Ansible的parted模块来批量扩展分区。
- hosts: your_host_group
gather_facts: True
tasks:-
name: 列出磁盘分区
parted_ls:
device: “/dev/sda”
register: parted_output -
name: 扩展分区
parted_resize:
device: “/dev/sda”
partition_number: “2”
size: “10GB”
when: “‘2’ in parted_output.stdout_lines[0]”
在上面的Playbook中,我们首先使用parted_ls命令列出磁盘的分区信息。然后,我们使用parted_resize命令来扩展指定分区。在when语句中,我们检查第一个分区的编号是否为"2",以确保只扩展该分区。您可以根据实际情况修改partition_number和size的值。
请注意,上述示例假设您要扩展的设备为/dev/sda,并且您拥有适当的权限来执行分区操作。确保在运行Playbook之前进行适当的备份和验证,以确保操作的正确性和安全性
-
当使用Ansible批量扩展LVM分区时,可以编写一个自定义的Ansible剧本或使用Ansible的模块来执行相应的操作。以下是一个示例的Ansible剧本,用于批量扩展LVM分区:
- hosts: your_host_group
become: true
tasks:-
name: 扩展LVM分区
lvm_volume_group:
vg_name: your_volume_group_name
pe_size: 128M
physical_volumes: your_physical_volumes
thin_pool_size: 10G
register: result
changed_when: false # 仅在物理卷发生变化时触发改变 -
name: 显示扩展结果
debug:
msg: “扩展后的LVM分区信息:{{ result.stdout }}”
请注意,上述示例中的your_host_group应替换为您的目标主机组名称,your_volume_group_name应替换为您要扩展的LVM卷组名称,your_physical_volumes应替换为构成卷组的物理卷列表。根据您的需求,您可能需要根据实际情况进行适当的调整。
在上述示例中,我们使用了lvm_volume_group模块来执行LVM分区扩展操作。该模块允许您定义卷组、物理卷和逻辑卷的属性,并对其进行配置。您可以根据自己的需求调整各个属性的值。
此外,我们还使用register关键字将执行结果保存到名为result的变量中,以便稍后使用。最后,我们使用debug模块来显示扩展结果。
请确保在运行Ansible剧本之前已正确设置好目标主机的访问凭据,并且您对目标主机的LVM分区具有适当的权限。此外,根据您的实际情况,您可能需要对剧本进行进一步的自定义和调整。
-
下载AWX
https://github.com/ansible/awx/archive/17.1.0.tar.gz
tar -zxvf awx-17.1.0.tar.gz
需要先部署docker服务