一、安装ansible
ansible安装常用两种方式,`yum 安装` 和 `pip 程序安装`
1、使用yum的方式安装
ansible使用centos7可以直接使用yum安装(yum install ansible -y)
但是centos8却不行,经过多次尝试,总结出来的一个问题,是因为库太新了所导致的,在新的epel库里边貌似就没有ansible,我们需要使用版本比较老一点的epel库就能解决这个问题了
①先清除/etc/yum.repos.d下无用的源,有用的可先进行备份
mkdir /etc/yum.repos.d/repo
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repo
②添加base源、epel扩展源
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
这里需要注意的是在阿里的epel的源可以发现,是版本比较新的epel源,需要使用
yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm进行拉取,
再使用sed语句对文件内的一些内容进行修改
sed -i 's|^#baseurl=https://download.example/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*
这样替换后的epel库之中进行拉取ansible会显示没有文件或者其他的报错,这是因为epel新的entos的库之中没有ansible的相关的文件的,我们可以使用老一点的epel文件使用sed语句进行修改,直接使用下边的语句:
sed -i 's|^#baseurl=https://download.example/pub/epel|baseurl=https://mirrors.aliyun.com/epel-archive|' /etc/yum.repos.d/epel*
sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*
修改一下变成epel-archive老存储库,替换使用yum makecache生成缓存,再使用yum install ansible -y安装ansible
假设这个源是从别的机器拷贝过来的会提示缺少EPEL存储库的GPG密钥,使用以下命令即可安装
rpm --import https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-8
最后、安装好之后使用ansible --version查看一下版本,然后查看一下/etc/ansible,查看有没有这个配置文件目录
应用于centos8的镜像版本在8.5以前,假设你的镜像版本为8.5.2111的版本,你会发现yum的方式安装不了,默认支持python3.11的版本所以需要使用pip的方式进行安装
2、使用pip的方式安装
centos8默认的python版本为3.6.8,所以我们需要先将python版本更新到3.11
1、下载Python 3.11的源代码:
# cd /usr/local/src
# wget https://www.python.org/ftp/python/3.11.0/Python-3.11.0.tgz
这里没装wget的伙伴,可以yum装下
# yum install -y wget
2、解压源代码:
# tar -xzf Python-3.11.0.tgz -C ../
3、进入解压后的目录:
# cd Python-3.11.0
4、安装python所需依赖
# yum install -y gcc patch libffi-devel python-devel zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
5、配置安装选项
# ./configure --enable-optimizations
6、编译安装
#make install //会覆盖python3.6.8版本变成3.11,如果不想覆盖可以使用make altinstall
7、重启
# reboot
8、查看python版本,安装ansible
# python3 --version
# pip3 install ansible
pip3安装方式默认没有配置文件和主机清单文件,需要我们自己创建
二、管理ansible.cfg配置文件
1. defaults
[defaults]
#inventory = /etc/ansible/hosts //定义Inventory
#library = /usr/share/my_modules/ //自定义lib库存放目录
#remote_tmp = ~/.ansible/tmp //临时文件远程主机存放目录
#local_tmp = ~/.ansible/tmp //临时文件本地存放目录
#forks = 5 //默认开启的并发数
#poll_interval = 15 //默认轮询时间间隔
#sudo_user = root //默认sudo用户
#ask_sudo_pass = True //是否需要sudo密码
#ask_pass = True //是否需要密码
#host_key_checking = False //首次连接是否检查key认证,取消注释
#roles_path = /etc/ansible/roles //默认下载的Roles存放的目录
#log_path = /var/log/ansible.log //执行日志存放目录
#module_name = command //默认执行的模块
#action_plugins = /usr/share/ansible/plugins/action //action插件存放目录
#callback_plugins = /usr/share/ansible/plugins/callback //callback插件存放目录
#connection_plugins = /usr/share/ansible/plugins/connection //connection插件存放目录
#lookup_plugins = /usr/share/ansible/plugins/lookup //lookup插件存放目录
#vars_plugins = /usr/share/ansible/plugins/vars //vars插件存放目录
#filter_plugins = /usr/share/ansible/plugins/filter //filter插件存放目录
#test_plugins = /usr/share/ansible/plugins/test //test插件存放目录
#strategy_plugins = /usr/share/ansible/plugins/strategy //strategy插件存放目录
#fact_caching = memory //getfact缓存的主机信息存放方式
#retry_files_enabled = False
#retry_files_save_path = ~/.ansible-retry //错误重启文件存放目录
2. privilege_escalation
[privilege_escalation]
#become=True //是否sudo
#become_method=sudo //sudo方式
#become_user=root //sudo后变为root用户
#become_ask_pass=False //sudo后是否验证密码
3. paramiko_connection
[paramiko_connection]
#record_host_keys=False //不记录新主机的key以提升效率
#pty=False //禁用sudo功能
4. ssh_connection
[ssh_connection]
#pipelining = False //管道加速功能,需配和requiretty使用方可生效
5. selinux
[selinux]
#libvirt_lxc_noseclabel = yes //selinux配置
6. colors
[colors]
#highlight = white
#verbose = blue
#warn = bright purple
#error = red
#debug = dark gray
#deprecate = purple
#skip = cyan
#unreachable = red
#ok = green
#changed = yellow
#diff_add = green
#diff_remove = red#diff_lines = cyan
Ansible的默认全局配置文件是/etc/ansible/ansible.cfg,如果ansible的工作目录里没有ansible.cfg那么默认使用全局的配置文件,使用ansible --version命令可以知道我们当前使用的是哪个配置文件,当系统内有多个配置文件时,优先取离当前位置最近的配置文件,使用ansible all --list-hosts -v查看主机清单