We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
我们先看网络上对它的解释:
Ansible 是一款简单的运维自动化工具,只需要使用 ssh 协议连接就可以来进行系统管理,自动化执行命令,部署等任务。
Ansible
ssh
显而易见, Ansible 拿来做服务器部署再合适不过。只需要预制好一份主机清单和要执行的命令步骤,就可以实现对一个清单的全部或部分主机远程****批量执行命令。
和 Jenkins 做服务部署对比, Ansible 更适合批量执行。以前我们在 Jenkins 做部署,就是脚本执行 ssh 命令远程执行命令。如果有大量的服务器,那么我们的脚本会写很长,且灵活度会变差。 Ansible 还支持无阻塞异步批量执行命令,非常方便。**
Jenkins
Ansible 目前的部署方式没有 Docker 安装,但我们可以定制一份 Ansible 镜像。 因为 Ansible 批量执行服务器时,还是采用的 ssh 进行操作,所以我们还是需要配置公钥私钥。**我们可以找一个已经在目标服务器配置过的公钥,和它配套的私钥一起打到 ****Ansible**镜像内。这样我们就可以实现 Ansible 免密登录。 但是,ssh连接时还涉及到一个叫做 known_hosts 文件。这个文件的主要作用是:
Docker
**Ansible**
known_hosts
当你用ssh连接到一个新的服务器的时候,ssh会让你确认服务器的信息(域名、IP、公钥),如果你确认了,就会将其写到 known_hosts 文件内。 以后你再连接到这个服务器,但是信息改变了(通常是公钥改变了),就会提示你服务器信息改变了,你可以把服务器信息它从 known_hosts 里删除,然后重新确认一份新的服务器信息。
但是在我们这里该文件作用不大,我们就可以在 Ansible 内配置 host_key_checking = False 和 host_key_checking = False 这两个选项来关闭这个校验(下方dockerfile内有写)。**直接使用公钥私钥配对成功就可以进行连接。**我们将公钥私钥放在 ssh 文件夹内即可:除了公钥私钥外,我们还需要准备一份 主机清单,命名为 hosts。**清单里面声明了要批量执行的主机。**这里可以先简单写一下,下一章我们会详细描述清单的语法格式。**最简单的****格式使用中括号声明主机组名称,换行写IP即可。**如下:
host_key_checking = False
主机清单
hosts
vim ./hosts
[fe-servers] 172.16.81.151 172.16.81.152
这里我们使用 Centos7 做镜像底座,用 Dockerfile 做镜像:
Centos7
Dockerfile
FROM centos:7 # 安装必要依赖,openssh-clients是为了支持ssh连接 RUN yum -y install wget curl vim openssh-clients RUN wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo RUN yum clean all RUN yum makecache # 拷贝公钥私钥进镜像内 COPY ssh /root/.ssh/ # 公钥私钥赋权 RUN chmod 755 ~/.ssh/ RUN chmod 600 ~/.ssh/id_rsa ~/.ssh/id_rsa.pub # 安装 ansible RUN yum -y install ansible # 拷贝主机组清单进 ansible 目录 COPY hosts /etc/ansible/ # 关闭 known_hosts 校验 RUN sed -i 's/^#host_key_checking = False/host_key_checking = False/' /etc/ansible/ansible.cfg RUN ansible --version
使用 docker build 命令打包为镜像,版本为t1:
docker build
docker build -t ansible:t1 .
等待 build 完成后,使用 docker run 命令启动容器:
build
docker run
docker run -itd --name ansible ansible:t1
因为ansible并没有可视化界面,所以不需要分配端口
启动后,使用 docker exec + ansible command 命令测试 ansible 安装,并远程执行一个命令测试:
docker exec
ansible command
ansible
docker exec -it ansible ansible all -m command -a "chdir=~ docker ps"
ansible all: 代表匹配所有主机组的所有主机 command:Ansible 命令模块。代表执行一个命令 chdir=~:chdir 在哪里执行命令 docker ps:查看正在跑的docker容器
执行成功后,如下图(我的主机组配置了2台机器,一台可以连接另一台不存在): 到这里,我们的 Ansible 就安装成功
The text was updated successfully, but these errors were encountered:
No branches or pull requests
Ansible 介绍与安装
啥是 Ansible
我们先看网络上对它的解释:
显而易见,
Ansible
拿来做服务器部署再合适不过。只需要预制好一份主机清单和要执行的命令步骤,就可以实现对一个清单的全部或部分主机远程****批量执行命令。对比 Jenkins
和
Jenkins
做服务部署对比,Ansible
更适合批量执行。以前我们在
Jenkins
做部署,就是脚本执行ssh
命令远程执行命令。如果有大量的服务器,那么我们的脚本会写很长,且灵活度会变差。Ansible
还支持无阻塞异步批量执行命令,非常方便。**安装 Ansible
使用 Dockerfile 制作镜像
Ansible
目前的部署方式没有Docker
安装,但我们可以定制一份Ansible
镜像。因为
Ansible
批量执行服务器时,还是采用的ssh
进行操作,所以我们还是需要配置公钥私钥。**我们可以找一个已经在目标服务器配置过的公钥,和它配套的私钥一起打到 ****Ansible**
镜像内。这样我们就可以实现Ansible
免密登录。但是,ssh连接时还涉及到一个叫做
known_hosts
文件。这个文件的主要作用是:但是在我们这里该文件作用不大,我们就可以在
Ansible
内配置host_key_checking = False
和host_key_checking = False
这两个选项来关闭这个校验(下方dockerfile内有写)。**直接使用公钥私钥配对成功就可以进行连接。**我们将公钥私钥放在ssh
文件夹内即可:除了公钥私钥外,我们还需要准备一份
主机清单
,命名为hosts
。**清单里面声明了要批量执行的主机。**这里可以先简单写一下,下一章我们会详细描述清单的语法格式。**最简单的****格式使用中括号声明主机组名称,换行写IP即可。**如下:这里我们使用
Centos7
做镜像底座,用Dockerfile
做镜像:使用
docker build
命令打包为镜像,版本为t1:docker build -t ansible:t1 .
启动容器并测试
等待
build
完成后,使用docker run
命令启动容器:启动后,使用
docker exec
+ansible command
命令测试ansible
安装,并远程执行一个命令测试:执行成功后,如下图(我的主机组配置了2台机器,一台可以连接另一台不存在):
到这里,我们的
Ansible
就安装成功The text was updated successfully, but these errors were encountered: