このチュートリアルでは、Redhat Enterprise Linux8でのAnsibleのインストールと構成を段階的に説明します。
Ansibleは、主要なオープンソース構成管理システムです。管理者や運用チームは、エージェントをインストールしなくても、中央のマシンから何千ものサーバーを簡単に制御できます。
このチュートリアルでは、次のことを学びます。
- Ansibleの概要
- Pythonのインストールと構成
- パスワードなしのSSHを設定する
- Ansibleをインストールする
- Ansibleのテストと管理
<中央>
Ansibleアーキテクチャ。
使用されるソフトウェア要件と規則
カテゴリ | 使用する要件、規則、またはソフトウェアバージョン |
---|---|
Red Hat Enterprise Linux 8 | |
Python3、Ansible | |
rootまたはsudo を介したLinuxシステムへの特権アクセス コマンド。 | |
# –指定されたLinuxコマンドは、rootユーザーとして直接、またはsudo を使用して、root権限で実行する必要があります。 コマンド$ –特定のLinuxコマンドを通常の非特権ユーザーとして実行する必要があります |
Ansibleの概要
Ansibleは、クラウドプロビジョニング、構成管理、アプリケーションデプロイメント、サービス内オーケストレーション、およびその他の多くのITニーズを自動化する非常にシンプルなIT自動化エンジンです。
Ansibleは、初日から多層展開用に設計されており、一度に1つのシステムを管理するだけでなく、すべてのシステムがどのように相互に関連しているかを説明することで、ITインフラストラクチャをモデル化します。
エージェントや追加のカスタムセキュリティインフラストラクチャを使用しないため、展開が簡単です。最も重要なのは、非常にシンプルな言語(YAML、Ansible Playbooksの形式)を使用して、自動化ジョブを次のような方法で記述できるようにすることです。分かりやすい英語。 Ansibleは、ノードに接続し、「Ansibleモジュール」と呼ばれる小さなプログラムをノードにプッシュすることで機能します。
これらのプログラムは、システムの望ましい状態のリソースモデルとして作成されています。次に、Ansibleはこれらのモジュールを(デフォルトではSSH経由で)実行し、終了時に削除します。
モジュールのライブラリは任意のマシンに常駐でき、サーバー、デーモン、またはデータベースは必要ありません。通常、お気に入りのターミナルプログラム、テキストエディタ、およびおそらくバージョン管理システムを使用して、コンテンツへの変更を追跡します。
Pythonのインストールと構成
RHEL8のPythonのデフォルトバージョンはPython3.6です。ただし、Python2はRHEL8でも引き続き使用できます。何らかの理由でRedHat Enterprise Linux8のインストールにPython3.6がない場合は、手動でインストールする必要があります。
Python 3.6は、端末で以下のコマンドを実行することにより、RHEL8にインストールできます。 Pythonは、Ansibleサーバーとそれが接続するすべてのホスト/クライアントの両方にインストールする必要があります。
# yum install python3 Updating Subscription Management repositories. Updating Subscription Management repositories. Last metadata expiration check: 8:59:59 ago on Sun 03 Feb 2019 11:20:51 PM +04. Dependencies resolved. ====================================================================================================================================================== Package Arch Version Repository Size ====================================================================================================================================================== Installing: python36 x86_64 3.6.6-17.el8+2102+a4bbd900 rhel-8-for-x86_64-appstream-beta-rpms 22 k Enabling module streams: python36 3.6 Transaction Summary ====================================================================================================================================================== Install 1 Package Total download size: 22 k Installed size: 22 k Is this ok [y/N]: y Downloading Packages: python36-3.6.6-17.el8+2102+a4bbd900.x86_64.rpm 6.0 kB/s | 22 kB 00:03 ------------------------------------------------------------------------------------------------------------------------------------------------------ Total 6.0 kB/s | 22 kB 00:03 warning: /var/cache/dnf/rhel-8-for-x86_64-appstream-beta-rpms-64aba9de5ea7e089/packages/python36-3.6.6-17.el8+2102+a4bbd900.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f21541eb: NOKEY Red Hat Enterprise Linux 8 for x86_64 - AppStream Beta (RPMs) 3.2 kB/s | 3.3 kB 00:01 Importing GPG key 0xF21541EB: Userid : "Red Hat, Inc. (beta key 2) <[email protected]>" Fingerprint: B08B 659E E86A F623 BC90 E8DB 938A 80CA F215 41EB From : /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-beta Is this ok [y/N]: y ... Installed: python36-3.6.6-17.el8+2102+a4bbd900.x86_64 Complete!
Python 3を使用するには、python3
と入力するだけです。 ターミナルで。
Python 3を使用する場合、コマンドはPython 2の場合はpython3とpython2であることに注意してください。システム全体で使用できないpythonを参照するようにアプリケーションが構成されている場合はどうなりますか?以下のbashエラーが発生します。
# python -bash: python: command not found
代替メカニズムを使用して、バージョン管理されていないpythonコマンドをシステム全体で有効にし、特定のバージョンに設定できます。 Python 3をデフォルトとして設定するには、次のコマンドを実行します。
# alternatives --set python /usr/bin/python3
python -Vを実行すると、構成されているデフォルトのPythonバージョンが表示されます。
#python -V Python 3.6.6
または、Pythonを起動してコンソールを作成します:
# python Python 3.6.6 (default, Oct 16 2018, 01:53:53) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)] on linux Type "help", "copyright", "credits" or "license" for more information. >>>
パスワードなしのSSHを設定
ユーザーをansible
で作成します すべてのホストで:
# useradd ansible ; echo "" | passwd --stdin ansible
sudoersファイル/etc/sudoers
に必要なエントリを作成します パスワードなしのsudoアクセス用のansibleユーザーの場合:
ansible ALL=(ALL) NOPASSWD: ALL
次に、AnsibleサーバーでSSHキーを生成します:
$ ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/home/ansible/.ssh/id_rsa): Created directory '/home/ansible/.ssh'. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /home/ansible/.ssh/id_rsa. Your public key has been saved in /home/ansible/.ssh/id_rsa.pub. The key fingerprint is: SHA256:wNt/uNePRkrV+Hhv/DJgteXK2BjOGvPbr9yNigXM2EM ansible@rhel8-ansible-server The key's randomart image is: +---[RSA 2048]----+ | | | . | | o E o | | + * + o| | . S * o * | | . += + +| | ==o@ +.| | OBoO+=| | +o++*BB| +----[SHA256]-----+
Ansibleユーザーとしてリモートサーバーにコピーします:
$ ssh-copy-id ansible@rhel8-ansible-client /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/home/ansible/.ssh/id_rsa.pub" The authenticity of host 'rhel8-ansible-client (192.168.1.109)' can't be established. ECDSA key fingerprint is SHA256:e+NfCeK/kvnignWDHgFvIkHjBWwghIIjJkfjygR7NkI. Are you sure you want to continue connecting (yes/no)? yes /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys ansible@rhel8-ansible-client's password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'ansible@rhel8-ansible-client'" and check to make sure that only the key(s) you wanted were added.
Ansibleをインストール
Pythonをインストールしたら、Ansibleのインストールに使用するPythonパッケージマネージャーであるPipのインストールに進みます。
# yum -y install python3-pip Updating Subscription Management repositories. Updating Subscription Management repositories. Last metadata expiration check: 9:03:18 ago on Sun 03 Feb 2019 11:20:51 PM +04. Package python3-pip-9.0.3-4.el8.noarch is already installed. Dependencies resolved. Nothing to do. Complete!
pip3
を取得したら インストールされている場合は、それを使用して、AnsibleをansibleユーザーとしてAnsibleManagementシステムにインストールします。
$ pip3 install ansible --user
次のコマンドを使用して、Ansibleがインストールされていることを確認できます。
$ ansible --version ansible 2.7.6 config file = None configured module search path = ['/home/ansible/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /home/ansible/.local/lib/python3.6/site-packages/ansible executable location = /home/ansible/.local/bin/ansible python version = 3.6.6 (default, Oct 16 2018, 01:53:53) [GCC 8.2.1 20180905 (Red Hat 8.2.1-3)]
テストと管理
Ansibleインベントリファイルを作成します。デフォルトは/etc/ansible/hosts
です。 ただし、ansibleユーザーのホームディレクトリにあるhostsファイルをコピーできます。以下のようなリモートホストのグループをhostsファイルに作成することもできます。
[web]
192.168.1.105
[db]
192.168.1.107
[app]
192.168.1.108
192.168.1.109
192.168.1.110
pingモジュールを使用してAnsibleをテストできます。実行が成功すると、以下の出力が表示されます。
$ ansible -i hosts 192.168.1.109 -m ping 192.168.1.109 | SUCCESS => { "changed": false, "ping": "pong" }
-iオプションは、インベントリファイルへのパスを提供するために使用されます。 「アプリ」グループ名についても同じ出力が得られるはずです。
$ ansible -i hosts app -m ping 192.168.1.108 | SUCCESS => { "changed": false, "ping": "pong" } 192.168.1.109 | SUCCESS => { "changed": false, "ping": "pong" } 192.168.1.110 | SUCCESS => { "changed": false, "ping": "pong" }
結論
Ansibleのシンプルさと他のツールの複雑さを軽減する機能により、Ansibleはお客様の環境にとって信頼できる申請者になっています。その最大の関心事はセキュリティと信頼性です。転送にはOpenSSHを使用し、プログラムに精通していない人でも監査できるように言語が設計されています。 Ansibleは、少数のインスタンスを使用する小規模なセットアップとエンタープライズ環境の両方を管理するのに十分適しています。