在离线环境中,使用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公開鍵認証設定まとめ
广告
将在 10 秒后关闭
bannerAds