目录
一、Ansible基础安装
- 先在本地有网络环境下准备好ansible的安装文件
yum -y install ansible --downloadonly --downloaddir /tmp/soft/ansible_rpm
- 将文件夹压缩成zip文件(ansible_rpm.zip),路径为/tmp/soft/ansible_rpm/
zip -q -r ansible_rpm.zip /tmp/soft/ansible_rpm/
- 将ansible_rpm.zip文件下载上传至服务器的/tmp/目录下
- 进入服务器的/tmp/目录下进行解压
unzip ansible_rpm.zip
- 离线安装
rpm -ivh *.rpm --force --nodeps
- 简单测试
ansible --version
二、Ansible配置
(1)SSH免密钥登录设置
- 一路回车,主要是用来免密通信的
ssh-keygen -t rsa
- 需要输入指定用户和ip的密码
ssh-copy-id -i ~/.ssh/id_rsa.pub 用户名@ip
(2)ansible配置
- 编辑配置文件ansible.cfg
vi /etc/ansible/ansible.cfg
- 参考下面进行配置
[defaults] # 主机列表配置文件 #inventory = /etc/ansible/hosts # 库文件存放目录 #library = /usr/share/my_modules/ # 临时py命令文件存放在远程主机目录 #remote_tmp = $HOME/.ansible/tmp # 本机的临时命令执行目录 #local_tmp = $HOME/.ansible/tmp # 默认并发数,同时可以执行5次 #forks = 5 # 默认sudo 用户 #sudo_user = root #每次执行ansible命令是否询问ssh密码 #ask_sudo_pass = True # 每次执行ansible命令是否询问ssh口令 #ask_pass = True # 默认模块 module_name = command # 检查对应服务器的host_key,建议取消注释 host_key_checking = False #日志文件 log_path=/var/log/ansible.log
三、制作ansible的docker镜像
注意:我这里生产环境部署应用,开始之前需要在本地有网络环境下准备centos:7的镜像、jdk安装包,下面所用的是jdk-17.0.5_linux-x64_bin.tar.gz,如没有需要 可以不下载
(1)前置准备
- jdk安装包
wget https://download.oracle.com/java/17/archive/jdk-17.0.5_linux-x64_bin.tar.gz
- centos:7的镜像
docker pull centos:7
(2)自制ansible镜像
①准备ansible依赖包
- 下载yum包管理工具
yum -y install yum-utils createrepo
- 创建ansible目录并进入该目录
mkdir ansible && cd ansbile
- 下载依赖包到本地
repotrack ansible cd ../ && createrepo ansible
- 准备repo文件
vim ansible.repo [ansible] name=ansible baseurl=file:///usr/local/ansible/ gpgcheck=0 enabled=1
- 放到ansible目录里面
mv ansible.repo ansible/
- 打成tar包
tar cf ansible.tar ansible
②准备dockerfile
cat >Dockerfile <<EOF
FROM centos:7
WORKDIR /usr/local/ansible
ADD ansible.tar /usr/local/
ADD jdk-17.0.5_linux-x64_bin.tar.gz /root
RUN rm -rf /etc/yum.repos.d/* && mv /usr/local/ansible/ansible.repo /etc/yum.repos.d/ && yum -y install ansible && rm -rf /usr/local/ansible
#配置jdk编译环境
ENV JAVA_HOME=/root/jdk-17.0.5
ENV PATH=$PATH:$JAVA_HOME/bin
CMD tail -f /dev/null
EOF
③打包成镜像
docker build -t ansible:latest .