pip离线安装部署使用ansible

Carol ·
更新时间:2024-11-13
· 617 次阅读

ansible离线安装部署使用 ansible离线安装部署使用一、适用场景二、安装python环境1. 下载Anaconda32. 为Anaconda3脚本赋权3. 执行Anaconda3脚本,按提示操作4. 设置环境变量三、pip离线打包ansible1. 下载需要离线部署的ansible2. 在nodeA离线下载ansible三、配置ansible信息1. 创建主机清单2. 配置sshpass登陆方式3. 配置ansible信息四、使用ansible1. ansible常用模块2. 代码案例 一、适用场景

在公司生产环境往往需要安装ansible来管理节点,但是需要安装ansible的节点nodeA无法联通网络nodeB可以通过pip下载ansible的包,所以需要离线部署方式来安装ansible。

执行步骤为:

nodeA离线安装python环境 nodeB打包ansible 将nodeB打包好的ansible上传到nodeA nodeA离线下载ansible包 配置ansible 二、安装python环境 1. 下载Anaconda3

Ansible的执行依赖python3的环境。
Anaconda包含python环境、很多python常用的包以及pip包管理器,所以选择可以一键安装部署的anaconda3。
下载地址
https://www.anaconda.com/products/individual

2. 为Anaconda3脚本赋权

将anaconda3上传到目标服务器,并给该下载脚本赋权。

chmod +x Anaconda3-2019.10-Linux-x86_64.sh 3. 执行Anaconda3脚本,按提示操作 sh Anaconda3-2019.10-Linux-x86_64.sh

anaconda默认安装到目录下,如果想要更改安装目录,需要在执行脚本过程中设置。

4. 设置环境变量

若在执行anaconda下载脚本时,未将其设置未环境变量,需要手工添加。
打开环境变量修改

vi /etc/profile

在环境变量文件中添加如下代码并保存

export PATH=/home/sysop/anaconda3/bin:$PATH

让环境变量生效

source /etc/profile

然后输入python -V,若python为3.7.4则代表设置成功。

三、pip离线打包ansible 1. 下载需要离线部署的ansible

在可连接到pip源的nodeB,下载ansible到指定目录即可,目录无要求。比如我是直接下载到了/目录下。

pip download ansible -d /

-d 标示指定的目录。
然后将该包压缩,并传到目标服务器节点。

tar -czvf ansible.tar ansible scp ansible.tar root@83.220.1.x:/home/root/

其中83.220.1.x为nodeA的ip地址。

2. 在nodeA离线下载ansible

此时可以发现在/home/root/目录下有了已经download好的ansible包,而且nodeA也已经有了python环境和pip下载指令,所以指定下载该tar包即可。

tar -xvf ansible.tar pip install --no-index --find-links="/home/root/ansible"

即可离线下载完成,然后输入ansible --version,可以看到相关信息,默认下载的是最新版本。

下载完成后,该包安装到了anaconda的site-packages中,所以该下载介质和anaconda.sh的下载介质也没啥用了,空间不足的话直接删了就好。

cd ~ rm -r ansible rm ansible.tar rm Anaconda3-2020.02-Linux-x86_64.sh 三、配置ansible信息 1. 创建主机清单

anisble默认的主机清单目录为/etc/ansible/hosts,但是通过pip安装一般无此目录和文件,需要手工创建。

cd /etc/ mkdir ansible cd ansible touch hosts

至此,我们的ansible主机清单已经配置完毕,在hosts里安装ansible的语法规则来创主机分组,如下例所示。

[group1] 83.249.1.2 83.249.1.3 [group1:vars] ansible_ssh_user=kyle ansible_ssh_pass=kyle123 ansible_become=true ansible_become_method=su ansible_become_user=root ansible_become_pass=root123

其中group1为主机清单,group1:vars为该组变量的参数,可以设置登陆密码、用户、登陆后的用户等信息。

ansible_ssh_user/pass,为登陆该节点的用户和密码。

但是有些节点不允许root用户的远程登陆,所以可以使用一个一般权限的用户登陆,然后登陆后使用su方式切换为root用户。这些操作可以通过vars来自动实现,具体参数如上所示。

2. 配置sshpass登陆方式

因为ansible和被控节点没有信任关系,所以需要ssh方式来连接,该模块依赖sshpass模块,所以需要下载该模块。

上传sshpass安装包到服务节点,如附件3所示。并依次执行如下操作。
https://sourceforge.net/projects/sshpass/files/sshpass/1.06/sshpass-1.06.tar.gz/download

tar -zxvf sshpass-1.06.tar.gz cd sshpass-1.06 ./configure make make install 3. 配置ansible信息

ansible.cfg为ansible的默认配置文件,ansible会自动读取该配置文件。

cd /etc/ansible/ touch ansible.cfg

需要将如下的配置添加到该配置文件中,其余还有很多特性,有兴趣的小伙伴可以自行研究。

host_key_checking=False:取消被控节点的key验证。这样就可以在ansible主节点连接被控节点的时候,免去输密码的环节。

四、使用ansible 1. ansible常用模块

至此,已经就在nodeA离线安装好了ansible,就可以开始使用了。
其中ansible常用的模块如下:

模块名 用途 参数
ping 检查指定节点机器是否连通,如果通返回pong
copy 在远程主机复制主节点的文件 src/dest
shell 在远程主机上执行命令
unarchive 解压本地文件到远程主机 src/dest/copy
file 执行文件相关操作 path/state/

如果对不是某个模块不是很清楚参数是什么,

ansible-doc module_name

module_name为你想要查询模块的名字。

-m 为指定模块名

-a 为参数

2. 代码案例 # 到group1的各个节点能否联通 ansible group1 -m ping # 将1.txt拷贝到远程主机/home/root下 ansible group1 -m copy -a 'src=/ansible/1.txt dest=/home/root/' # 在远程执行本地脚本 ansible group1 -m script -a 'test.sh' #将本地tar包在远程解压 ansible group1 -m unarchive -a 'src=/ansible/file.tar dest=/home/root' # 在远程主机/home/root/下创建文件夹 ansible group1 -m file -a 'path=/home/root/dir state=directory' # 在远程主机/home/root/dir/下创建文件file.txt ansible group1 -m file -a 'path=/home/root/dir/file.txt state=touch' # 删除远程主机的dir文件夹 ansible group1 -m file -a 'path=/home/root/dir state=absent'

如果想要更方便的操作,能够让ansible按照你所设想的步骤来执行ad-hoc,可以考虑playbook,是一种yml格式的更强大的ansible命令集,能够让ansible像剧本一样去执行你所设想的命令。

可可加冰 原创文章 1获赞 0访问量 197 关注 私信 展开阅读全文
作者:可可加冰



安装 ansible pip

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章
Florence 2020-12-05
718