在离线环境中,使用Ansible #1 ~服务器构建篇~
首先
我是一位基础设施工程师,平时从最底层开始创建虚拟环境并安装客户端操作系统。所以,专业术语当然懂得很多,但自动化和效率化有点疏远。这是一篇关于我写下来的一篇文章,宣称我这样的人会使用Ansible!并且会让它可用!
背景概述
正在学习自动构建服务器。虽然使用Terraform进行构建本身,但我想结合使用Ansible进行构建后的配置。好的,让我们搭建一个Ansible服务器。
在这里,会出现两台服务器。如果这里变得复杂起来,SSH密钥认证就会变得麻烦。
-
- Ansibleサーバー
Ansibleモジュールがインストールされている(構築手順内でインストールする)
Ansibleクライアントに対してAnsibleを実行する
Ansibleで設定されることはない
接続元のユーザーはroot
Ansibleクライアント
Ansibleモジュールはインストールされない(構築手順内でもインストールされない)
Ansibleを流される対象
接続先になるユーザーはroot
做过的事情。(zuò guò de shì
-
- Ansibleサーバーの準備
Ansible パッケージのインストール
AnsibleサーバーとクライアントサーバーのSSH接続
Ansible playbook テスト
没做的事情 zuò de
-
- 既存イメージのクローンのため以下は今回の手順の対象外
OSの導入
SSHの導入/設定
ファイアーウォールの設定(オフ)
SELinux(オフ)
Ansible服务器的建设步骤
创建环境
-
- IBM Power System S824 (Virtual I/O Client)
-
- Red Hat Enterprise Linux
minimal install, sshでのrootログイン,Password認証は使用可能な状態
安装Ansible模块到Ansible服务器。
必要的软件包(RPM)
在离线环境中安装ansible时,需要解决依赖关系并提供以下文件集。
Epel 7 可以进行释义为 “Epel 第七版”。
-
- libtommath-0.42.0-5.el7.ppc64le.rpm
-
- libtomcrypt-1.17-25.el7.ppc64le.rpm
-
- python2-crypto-2.6.1-16.el7.ppc64le.rpm
-
- python-keyczar-0.71c-2.el7.noarch.rpm
-
- python-paramiko-2.1.1-0.10.el7.noarch.rpm
-
- python2-jmespath-0.9.0-1.el7.noarch.rpm
-
- python-httplib2-0.9.2-0.2.el7.noarch.rpm
-
- sshpass-1.06-1.el7.ppc64le.rpm
- ansible-2.9.1-1.el7.noarch.rpm
- 使用localinstall来安装此文件集。
# cd {ファイルをおいた場所}
# yum localinstall -y ./*.rpm
- 确认Ansible的版本
# ansible --version
ansible 2.9.1
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, Sep 12 2018, 09:40:07) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)]
验证了可以使用Ansible。
SSH连接的准备。
尽管在Qiita上有很多有学习价值的文章,但由于我的日语阅读能力较差,我将以写的方式来理解执行Ansible的服务器和被控制的服务器(客户端)。在这里,困难之处在于,ssh服务器是Ansible被控制的一方(客户端),而ssh客户端(访问的一方)是Ansible执行服务器……。
[Ansible服务器端操作]
创建连接所需的密钥。本次将不设置密码。
# ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): /root/.ssh/id_rsa
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
没问题,连接所需材料已经准备好了。
id_rsa 是私钥(由自己保留),id_rsa.pub 是公钥(提供给连接的对方)。
接下来,我们将进入实际的连接过程。将公钥分发到目标服务器(Ansible客户端)上。
首先,我们要准备密钥放置的位置。访问权限非常重要。这只需要操作一次。
※ 请参考SSH公钥认证设置概述。
[Ansible客户端工作]
ssh ansible@ansible_client
mkdir ./.ssh/
chmod 700 ./.ssh/
touch .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
一旦客户端的接收系统(创建目录和文件)设置好了,我会复制给你公钥。通过一行命令简单地拷贝ssh公钥认证设置总结的方式很容易。
[Ansible服务器端作业]
cat ~/.ssh/id_rsa.pub | ssh ansible@ansible_client 'cat >> .ssh/authorized_keys'
在查看公开密钥的同时,通过SSH连接到Ansible客户端服务器并将查看内容输出到SSH目标端的authorized_keys文件。确认后应该显示如下。
[Ansible客户端的操作]
$ cat /home/ansible/.ssh/authorized_keys
ssh-rsa (公開鍵/省略)(ホスト名/省略)
为了确认连接,请连接互联网。
# ssh ansible@ansible_client
Last login: Fri Dec 13 15:47:21 2019 from 172.16.81.4
[ansible@ansible_client ~]$
做好了。完美。
继续阅读《Ansible #2 ~ Ansible故障解决篇~》中的离线环境使用方法。
请参考
SSH连接
-
- ansibleでLinuxユーザーの作成と鍵認証を設定する
- ssh公開鍵認証設定まとめ