自动化运维工具之 Ansible 介绍及安装使用

网友投稿 708 2022-10-14

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

自动化运维工具之 Ansible 介绍及安装使用

一、初识Ansible

介绍:

基本特点:

安装部署简单,支持多种方式安装(yum,git等)支持分类过滤管理主机轻量级,被管理端无需安装特定agent(需有python、ssh环境)模块众多,可以满足我们的需要开发社区活跃Ansible playbook 剧本支持各种公有云、私有云平台基于Push推送方式,可以随时修改幂等性(已经存在的修改后的状态,再次执行这个任务时,不会进行任何修改)

如图:

注:上图是从官方介绍视频中的截图。用户通过ansible 自动化引擎, 使用playbook ,插件、模块去去管理被控制主机。并可以结合CMDB管理系统。

二、Ansible运行环境

1.ansible的安装支持多种方式。

官方建议:

如果你想在Red Hat Enterprise Linux (TM), CentOS, Fedora, Debian, or Ubuntu上,运行最新版本的Ansible版本,推荐使用包管理器,如yum,apt-get.对于其它安装选项,推荐使用pip 包管理器进行安装如果想要使用最新的功能可以跟踪开发版本,从github上进行git到本地,进行使用

2.控制机要求:

Ansible 可以运行在有python 2.6或者2。7环境的类unix 环境。windows 暂不支持

3.被控制节点要求

控制节点需要和 Ansible 被控制节点通信,通常使用ssh 进行连接。另外也需要python环境。

三、Ansible 安装

1.控制管理机安装(安装方式有多种,源码,pip等方式),我们这里使用git 源码安装方式进行部署

[root@docker ~]# git clone git://github.com/ansible/ansible.git --recursive[root@docker ~]# cd ansible/

进行源码安装

[root@docker ansible]# make && make install

先安装pip包管理工具,然后安装ansible 程序所使用的几个python模块

更新ansible 代码时用到的两条命令

[root@docker ansible]# git pull --rebaseCurrent branch devel is up to date.[root@docker ansible]# git submodule update --init --recursive

[root@docker ansible]# ansible --versionansible 2.3.0 config file = configured module search path = Default w/o overrides

三、配置Ansible 尝试下管理主机

1.默认配置文件在你git下载源码的目录ansible目录中

/root/ansible/bin/ansible

2.创建hosts存放目录,并编写hosts文件

[root@docker ansible]# mkdir -pv /etc/ansible/mkdir: created directory '/etc/ansible/'

从安装文件中,拷贝hosts

[root@docker ansible]# cp /root/ansible/examples/hosts /etc/ansible/.

编写hosts文件,添加1个主机

3.创建俩docker 容器吧

[root@docker ~]# docker run -d -it --name centos-1 centos_sshd_1b032a6c8b4014837181029059661104373db8a6190a1f854ae5ff701b961a546[root@docker ~]# docker run -d -it --name centos-2 centos_sshd_1cc647f916437df70b54096bcf676804114d1558124234b7716aee68271414f27

容器创建完,默认已经启动了sshd 服务开启22端口(这里可以查看后续我发的Docker 自定义镜像的文章),我们查看下它们的ip

[root@docker ~]# docker exec centos-1 hostname -I172.17.0.2 [root@docker ~]# docker exec centos-2 hostname -I172.17.0.3

4.将上面2个被控制主机的ip 添加到 hosts 文件中,并进行通信测试

打开/etc/ansible/hosts文件,在末尾按照以下格式添加。

[cenots_group]172.17.0.2172.17.0.3

添加完成后,在控制主机上使用 ping 模块进行测试,如下:(约定:被控主机称为client,控制主机称为managent,以下类似)

所有主机:

[root@docker ~]# ansible '*' -m ping --ask-passSSH password: 172.17.0.3 | SUCCESS => { "changed": false, "ping": "pong"}172.17.0.2 | SUCCESS => { "changed": false, "ping": "pong"}

指定组的方式:

[root@docker ~]# ansible centos_group -m ping --ask-passSSH password: 172.17.0.2 | SUCCESS => { "changed": false, "ping": "pong"}172.17.0.3 | SUCCESS => { "changed": false, "ping": "pong"}

指定单个主机的方式:

[root@docker ~]# ansible '172.17.0.3' -m ping --ask-passSSH password: 172.17.0.3 | SUCCESS => { "changed": false, "ping": "pong"}

解释:ansible 命令后面,跟的第一个参数,也就是我们hosts 文件里面的主机清单(可以指定单个主机ip,也可以是组,也支持正则匹配); 第二个参数是使用-m 指定模块,这里我们用了 ping模块。 --ask-pass 这个是当我们使用主机密码来进行ssh认证时的参数,多次输入后,会感觉比较麻烦。推荐使用密钥的方式,安全又方便。下面说下如何用公钥

5.使用密钥来进行ssh 远程访问

先在management 上生成公钥私钥对

[root@docker ~]# ssh-keygen -t rsa -C "management"

将公钥放到使用 ssh-copy-id命令,上传到client 上面去。

[root@docker ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.17.0.2[root@docker ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub root@172.17.0.3

现在再试下管理命令,不用输入密码了

[root@docker ~]# ansible centos_group -a "/bin/echo Hello world"172.17.0.3 | SUCCESS | rc=0 >>Hello world172.17.0.2 | SUCCESS | rc=0 >>Hello world

ok,等下一次学习Inventory(资源清单)时,再来分享吧。

参考链接:

上一篇:自编写二进制安装kubernetes脚本v2.0版本
下一篇:Redis线上救命丸:01---误操作AOF、RDB恢复数据
相关文章

 发表评论

暂时没有评论,来抢沙发吧~