自动化运维工具之Ansible

引导

ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

  • ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:
    • 连接插件connection plugins:负责和被监控端实现通信;
    • host inventory:指定操作的主机,是一个配置文件里面定义监控的主机;
    • 各种模块核心模块、command模块、自定义模块;
    • 借助于插件完成记录日志邮件等功能;
    • playbook:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。

1.ubuntu安装ansible

# 1.1 apt命令安装
步骤1: 更新系统包列表
在安装任何新的软件包之前,我们首先需要更新Ubuntu的系统包列表。打开终端,输入以下命令
[root@ubt-ans ~]# apt update
	Hit:1 https://mirrors.aliyun.com/ubuntu jammy InRelease
	Get:2 https://mirrors.aliyun.com/ubuntu jammy-security InRelease [129 kB]
	Get:3 https://mirrors.aliyun.com/ubuntu jammy-updates InRelease [128 kB]
	Get:4 https://mirrors.aliyun.com/ubuntu jammy-backports InRelease [127 kB]
    ......
步骤2:安装软件源工具
接下来,我们需要安装一个名为'software-properties-common'的包。这个包包含了一些用于管理软件源的脚本。输入以下命令进行安装:
[root@ubt-ans ~]# sudo apt install software-properties-common
	Reading package lists... Done
	Building dependency tree... Done
	Reading state information... Done
	software-properties-common is already the newest version (0.99.22.9).
	software-properties-common set to manually installed.
	0 upgraded, 0 newly installed, 0 to remove and 96 not upgraded.
		......
步骤3:添加Ansible的PPA
现在,我们需要添加Ansible的个人软件包存档(PPA)。PPA是Ubuntu用于托管更新和用户特定版本的软件包的地方。输入以下命令:
[root@ubt-ans ~]# sudo add-apt-repository --yes --update ppa:ansible/ansible
	Repository: 'deb https://ppa.launchpadcontent.net/ansible/ansible/ubuntu/ jammy main'
	....
	Hit:3 https://mirrors.aliyun.com/ubuntu jammy-updates InRelease
	Hit:4 https://mirrors.aliyun.com/ubuntu jammy-backports InRelease
	Get:5 https://ppa.launchpadcontent.net/ansible/ansible/ubuntu jammy InRelease [18.0 kB]
	......
步骤4:安装Ansible
添加了PPA之后,我们就可以安装Ansible了。输入以下命令:
[root@ubt-ans ~]# apt install ansible
	Reading package lists... Done
	Building dependency tree... Done
	....
	Selecting previously unselected package python3-nacl.
	Preparing to unpack .../06-python3-nacl_1.5.0-2_amd64.deb ....
	Setting up python3-resolvelib (0.8.1-1) ...
		......
[root@web01 ~]# ansible  --version
	ansible [core 2.17.5]
	  config file = /etc/ansible/ansible.cfg
	  configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
	  ansible python module location = /usr/lib/python3/dist-packages/ansible
	  ansible collection location = /root/.ansible/collections:/usr/share/ansible/collections
	  executable location = /usr/bin/ansible
	  python version = 3.10.12 (main, Nov 20 2023, 15:14:05) [GCC 11.4.0] (/usr/bin/python3)
	  jinja version = 3.0.3
	  libyaml = True
# 1.2.二进制安装
# 1.2.1 从PPA的网页手动下载.deb文件,然后使用dpkg命令安装从PPA的网页手动下载.deb文件,然后使用dpkg命令安装
	wget https://ppa.launchpadcontent.net/ansible/ansible/ubuntu/pool/main/a/ansible/ansible_10.5.0-1ppa~jammy_all.deb
# 1.2.2安装依赖,Ansible软件包依赖于ansible-core,
安装ansible-core:
	sudo apt-get install ansible-core
# 1.2.3 安装ansible
	sudo dpkg -i ansible_10.5.0-1ppa~jammy_all.deb
# 1.2.4 解决依赖问题:
 如果直接安装ansible-core仍然遇到问题,可以尝试使用apt-get来解决依赖问题:
	sudo apt-get install -f
这个命令会尝试修复任何未配置的软件包,并解决依赖问题
# 1.2.5 清理和更新:
在安装之前,确保您的软件包列表是最新的,并清理任何可能的残留软件包:

sudo apt-get update
sudo apt-get clean
sudo apt-get autoclean

2.centos安装ansible

# 2.1 pip3安装ansible
# 2.1.1.python 3中安装 pip,python中软件包管理命令.
	yum install -y python3-pip
# 2.1.2.卸载/tmp/
	umount -lf /tmp/
# 2.1.3.安装ansible  #-i 指定源
	pip3 install ansible
# 2.1.4.检查
	ansible --version
# 2.2 yum安装
	mkdir -p /root/ansible
	yum install --downloadonly  --downloaddir=/root/ansible  ansible
	使用yum包管理器仅下载名为ansible的软件包,而不进行安装,并将下载的RPM文件保存到/root/ansible目录中
	cd  /root/ansible
	tar zcf  ansible-2.9.27.tar.gz  .
	scp给其他机器安装
	yum -y localinstall ./*.rpm
	ansible --version

3. ansible使用

3.1 ansible配置文件修改

	默认配置文件/etc/ansible/ansible.cfg  没有手动创建mkdir
	cat >/etc/ansible/ansible.cfg<<EOF
	[defaults]
	host_key_checking = False
	deprecation_warnings = False
	interpreter_python = /usr/bin/python3
	[inventory]
	[privilege_escalation]
	[paramiko_connection]
	[ssh_connection]
	[persistent_connection]
	[accelerate]
	[selinux]
	[colors]
	[diff]
	EOF
  • 配置文件解析:
    • host_key_checking = False
      • 禁用SSH主机密钥检查。这意味着Ansible不会检查目标主机的SSH密钥是否在known_hosts文件中,这可以加快连接速度,但减少了安全性。
    • deprecation_warnings = False
      • 禁用弃用警告。这将隐藏那些即将在未来版本中被弃用的功能的警告信息。
    • interpreter_python = /usr/bin/python3
      • 全局设置Ansible使用的Python解释器路径为/usr/bin/python3。这将覆盖Ansible的自动解释器发现机制,始终使用这个指定的解释器。
    • [inventory]
      • 这个部分是Ansible管理主机信息的配置文件,相当于系统HOSTS文件的功能,默认存放在/etc/ansible/hosts。
    • [privilege_escalation]
      • 这个部分用于配置特权提升相关的设置,如become、become_method等,但在您提供的配置中为空。
    • [paramiko_connection]
      • 这个部分用于配置使用Paramiko作为后端时的SSH连接设置,但在您提供的配置中为空。
    • [ssh_connection]
      • 这个部分用于配置SSH连接的设置,如控制密钥交换算法等,但在您提供的配置中为空。
    • [persistent_connection]
      • 这个部分用于配置持久连接的设置,如连接超时等,但在您提供的配置中为空。
    • [accelerate]
      • 这个部分用于配置Accelerate模式的设置,这是一种提高Ansible执行速度的方式,通过在目标主机上运行一个代理来减少网络延迟,但在您提供的配置中为空。
    • [selinux]
      • 这个部分用于配置与SELinux(安全增强型Linux)相关的设置,但在您提供的配置中为空。
    • [colors]
      • 这个部分用于配置Ansible输出的颜色,如错误、警告、提示等的颜色,但在您提供的配置中为空。
    • [diff]
      • 这个部分用于配置Ansible在执行任务时显示的差异输出的设置,如always、context等,但在您提供的配置中为空。
    • 总的来说,您提供的配置文件中只设置了[defaults]部分的一些基本配置,其他部分都是空的,可以根据需要添加更多的配置选项来控制Ansible的行为。

3.2 分发密钥

基于ssh
管理机器分发密钥给被管理机
手动分发密钥:
	ssh-keygen
	ssh-copy-id  root@xxxxxx
脚本分发密钥:
	https://www.cnblogs.com/kyle-7Qc/p/18518921

3.3 主机清单

cat >/etc/ansible/hosts<<EOF
[xxx]
172.16.1.41
[xxx]
172.16.1.31
[xxx]
172.16.1.7
172.16.1.8
EOF
posted @ 2024-11-01 00:08  kyle_7Qc  阅读(3)  评论(0编辑  收藏  举报