Ansible系列(2):Ansible环境搭建并执行第一条ad-hoc命令

这是Ansible系列课程第二节,Ansible环境搭建。介绍Ansible在不同的平台上的安装方式,配置SSH Key打通与其他主机的连接,并执行第一条ad-hoc命令验证ansible是否正常。

该系列课程前后章节都是有关联性的,对于初学者建议按顺序阅读。也可以选择特定的章节了解单个知识点。

在上一节介绍了Ansible与其他配置管理工具非常的不同。它的设计思路使得Ansible不仅使用简单,而且安装也非常简单。它不需要为此准备额外的配置文件和客户端即可使用。Ansible将机器分为控制节点管理节点。我们只需要在控制节点上安装Ansible,并且在控制节点上执行ad-hoc命令或者执行playbook,以此完成对其他管理节点的配置和操作。

1、基础环境要求

该系列教程所用到的环境为:

两台云主机:101.34.150.237(控制节点),118.195.199.238(管理节点)

操作系统:CentOS 7.6 64位

Python版本: 2.7.5

Ansible版本:2.9.25

Git版本:2.33.0

IDE版本:IntelliJ IDEA Ultimate 2019.3.2

代码托管平台:码云

Ansible目前支持Linux和MacOS作为控制节点,管理节点可以是Linux、MacOS、其他类Unix系统和Windows。Ansible对控制节点的配置没有太多要求,对管理节点的要求就更低了。但Ansible的运行也不是一点要求也没有,还是需要具备执行Ansible所必须的基础条件:Python 2.6或更高版本,OpenSSH

这两个程序在目前的大多数操作系统上都已经安装好了,我们可以检查一下是否安装。下面是在本环境中通过查看版本号检查是否安装的命令。

检查Python的版本:

[root@controll-node ~]# python -V

Python2.7.5

检查OpenSSH是否安装

[root@controll-node ~]# ssh -V

OpenSSH_7.4p1, OpenSSL1.0.2k-fips26Jan2017

如果没有安装可以通过包管理器进行安装。

#安装python2

[root@controll-node ~]#yum install python2 -y

#安装OpenSSH

[root@controll-node ~]#yum install openssh -y

Git主要用于从代码库中下载和更新Ansible脚本。当然,你也可以直接在服务器上编辑,执行,但这里不建议这么做。Ansible采用的是基础设施即代码的理念,应该用管理代码的方式去管理Ansible的脚本,这样才能享受版本控制带来的好处。

关于Git的安装可以利用包管理器直接安装,只不过安装的Git版本较低,命令如下:

[root@controll-node ~]#yum install git -y

其他更多工具的安装部署可以到“幂次平台”中查看。

2、Ansible的安装

前面章节提到,Ansible的安装非常简单并且只需要在控制节点安装。下面我们介绍如何在控制节点安装Ansible,安装Ansible的方法有很多,可以通过Linux的包管理器直接安装,也可以通过源码的方式安装,还可以通过python的包管理工具pip进行安装,这几种方式都能完成Ansible的安装。下面我们分别介绍一下:

①Linux包管理器安装

包管理器能够自动的解决软件的依赖问题,使得安装软件非常的容易。只需要通过一条命令即可完成Ansible的安装,不同的操作系统安装命令也不一样。

CentOS、Fedora、REHL以及兼容版本:

[root@controll-node ~]#sudo yum install ansible

Ubuntu、Debian以及兼容版本:

[root@controll-node ~]#sudo apt-get install ansible

②源码方式安装

这是安装Ansible最新版本的最佳方法,甚至可以提前尝鲜未发布的新特性,但同时也可能是一个未完全测试通过,还带有bug的版本。这种方式就需要克隆Git源码库,然后进行安装,命令如下:

[root@controll-node ~]#git clone https://github.com/ansible/ansible.git

[root@controll-node ~]#cd ansible

[root@controll-node ~]#sudo make install

③pip包管理器安装

pip是Python的包管理器,提供了对Python包的查找、下载和安装功能。对于Python2.7.9+和Python3.4+以上的版本都自带了pip工具。

如果没有安装pip可以通过下面的命令进行安装:

[root@controll-node ~]#yum install python2-pip

[root@controll-node ~]#yum install python3-pip

然后使用pip安装ansible

[root@controll-node ~]#pip install ansible

3、检查安装结果

Ansible安装完后,通过查看Ansible版本号检查安装是否成功。

[root@controll-node ~]# ansible --version

ansible2.9.25

config file=/etc/ansible/ansible.cfg

configured module search path=[u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']

ansible python module location=/usr/lib/python2.7/site-packages/ansible

executable location=/usr/bin/ansible

python version=2.7.5 (default, Apr22020,13:16:51) [GCC4.8.520150623(Red Hat4.8.5-39)]

4、配置SSH KEY

Ansible的控制节点是通过SSH远程连接管理节点并执行具体的任务。虽然Ansible也支持密码的方式,但每次都传入密码,不易将任务自动化,如果写到脚本里,特别是root的密码也是不安全的。因此,我们可以通过SSH KEY的方式建立控制节点和管理节点的连接。通过以下几个步骤:

STEP1:在控制节点通过下面命令生成SSH KEY:

[root@controll-node ~]# ssh-keygen -t rsa

Generating public/private rsa key pair.

Enter fileinwhich to save the key (/root/.ssh/id_rsa):

Enter passphrase (emptyforno passphrase):

Enter same passphrase again:

Your identification has been savedin/root/.ssh/id_rsa.

Your public key has been savedin/root/.ssh/id_rsa.pub.

The key fingerprint is:

SHA256:HF83TTg5MnLX7aokggM6PlJhlx/rdJt0UT4X7MEzmgA root@controll-node

The key's randomart image is:

+---[RSA2048]----+

|        E.   o+o|

|          o=&oo|

|     .  .  *.BoO.|

|  o+.. o..=.o..|

| .+o+S .. o . |

|+*+o . .  |

| o . o+=o .   |

|. o   . o   .    |

| . .             |

+----[SHA256]-----+

STEP2:将控制节点的公钥添加的管理节点的authorized_keys文件中,这样每次就不需要再次输入密码 了,可以采用如下命令添加。

[root@controll-node ~]# ssh-copy-id root@118.195.199.238

/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed:"/root/.ssh/id_rsa.pub"

/usr/bin/ssh-copy-id: INFO: attempting to loginwith the new key(s), to filter out any that are already installed

/usr/bin/ssh-copy-id: INFO:1key(s) remain to be installed--ifyou are prompted now it is to install the new keys

root@118.195.199.238's password:

Number of key(s) added:1

Now try logging into the machine, with:"ssh 'root@118.195.199.238'"

and check tomakesure that only the key(s) you wanted were added.

STEP3:验证SSH连通性,可以看出不需要输入密码,控制节点通过SSH连接到管理节点。

[root@controll-node ~]# ssh root@118.195.199.238

Last login: Sun Sep1219:29:542021from223.72.41.238

[root@manage-node ~]#

可能出现的问题及解决方案:

1、在通过ssh-copy-id进行SSH KEY授权时,出现Permission denied(publickey,gssapi-keyex,gssapi-with-mic)问题。

解决:如果出现这个问题,可以修改管理节点下的/etc/ssh/sshd_config这个文件,检查并开启下面的配置:

PermitRootLogin yes

PubkeyAuthentication yes

AuthorizedKeysFile .ssh/authorized_keys

PasswordAuthentication yes

修改完后保存该文件,重启sshd服务,再次重试OK了。

[root@manage-node ~]# systemctl restart sshd.service

5、执行第一条ad-hoc命令

到目前为止,通过Ansible控制其他主机的条件已经满足了,是时候小试牛刀执行一下Ansible命令了。注意:这一步不对Ansible的配置做过多的解释,后面章节都会讲到。下面分两步执行:

STEP1:因为初次执行Ansible,我们需要将管理节点添加到inventory文件中。默认的ansible inventory文件是/etc/ansible/hosts文件。在该文件的末尾添加如下内容,因为Ansible是从该文件读取需要连接的管理节点的。

[devops]

118.195.199.238

STEP2:在控制节点执行以下ad-hoc命令,该命令包含用于测试控制节点和管理节点联通性的ping模块。

[root@controll-node ~]# ansible devops -m ping

118.195.199.238 | SUCCESS=> {

"ansible_facts": {

"discovered_interpreter_python":"/usr/bin/python"

   },

"changed":false,

"ping":"pong"

}

该命令的执行结果是SUCCESS,说明Ansible的控制节点和管理节点是联通的,可以使用Ansible执行其他任务了。

6、总结

本文主要介绍Ansible的环境搭建,包含不同平台下安装Ansible的不同方法。Ansible安装完成后,配置SSH KEY并通过一条ad-hoc命令验证控制节点和管理节点的连接是正常的。既然环境都准备好了,那么接下来就进入到学习Ansible具体使用的章节了。


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,099评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,828评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,540评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,848评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,971评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,132评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,193评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,934评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,376评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,687评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,846评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,537评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,175评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,887评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,134评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,674评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,741评论 2 351

推荐阅读更多精彩内容