Ansibleは、システム管理者が複数のシステムを一度にインストール、構成、プロビジョニングするために使用する無料のオープンソース自動化プラットフォームです。現在、IT環境は非常に複雑であり、多くの場合、非常に迅速に拡張する必要があります。自動化により、システム管理者と開発者の仕事が容易になり、組織に付加価値をもたらす他のタスクに注意を向けることができます。 Ansibleはセットアップと使用が非常に簡単です。 Ansibleを使用するのにコーディングスキルは必要ありません。
この投稿では、OracleLinux8にAnsibleをインストールする方法を紹介します。
前提条件
- Atlantic.NetCloudPlatformでOracleLinux8を実行しているサーバー。これがマネージャーノードになります
- Atlantic.NetCloudPlatformでOracleLinux8を実行している2番目のサーバー。これがワーカーノードになります
- サーバーで構成されているrootパスワード
ステップ1-Atlantic.Netクラウドサーバーを作成する
まず、Atlantic.Netクラウドサーバーにログインします。 2GB以上のRAMを搭載したオペレーティングシステムとしてOracleLinux8を選択して、新しいサーバーを作成します。 SSH経由でクラウドサーバーに接続し、ページの上部で強調表示されているクレデンシャルを使用してログインします。
サーバーにログインしたら、次のコマンドを実行して、ベースシステムを最新の利用可能なパッケージで更新します。
dnf update -y
ステップ2–SSHキーベースの認証を設定する
開始する前に、Ansibleコントロールノードとマネージャーノードの間にSSHパスワードなしのログインを設定する必要があります。 SSHキーベースの認証を設定することでそれを行うことができます。
まず、次のコマンドを使用して秘密鍵と公開鍵を生成します。
ssh-keygen -t rsa
次の出力が表示されます。
Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Created directory '/root/.ssh'. 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. The key fingerprint is: SHA256:0qOchzAC0Asm8WPlduL7ZxN6C5NUelScBo2nYVuqPMs [email protected] The key's randomart image is: +---[RSA 3072]----+ |oo . .=.. | |+o.o +.B | |+.+.+ ..oO | | o.+ o =+ | | . +.+.S | | . *+B.. | | ..O+.. | | .E+= | | .+.o | +----[SHA256]-----+
次に、次のコマンドを使用して、生成された公開鍵をAnsible管理対象ノードにコピーします。
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]
次の出力が表示されます。
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" The authenticity of host '192.168.1.10 (192.168.1.10)' can't be established. ECDSA key fingerprint is SHA256:4K4sZbu1hLHzDGlwmWAJng6nDbxDqp6hnv65KDaOAn0. Are you sure you want to continue connecting (yes/no/[fingerprint])? 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 [email protected]'s password: Number of key(s) added: 1 Now try logging into the machine, with: "ssh '[email protected]<server-ip>'" and check to make sure that only the key(s) you wanted were added.
次に、次のコマンドを実行して、SSHパスワードなしのログインをテストします。
ssh [email protected]
ステップ3– OracleLinux8にAnsibleをインストールする
次に、AnsibleコントロールノードにAnsibleパッケージをインストールする必要があります。デフォルトでは、AnsibleパッケージはOracle Linux 8のデフォルトのリポジトリでは使用できないため、EPELリポジトリからインストールする必要があります。
まず、次のコマンドを使用してEPELリポジトリをインストールします。
dnf install -y epel-release
次に、次のコマンドを使用してAnsibleパッケージをインストールします。
dnf install ansible -y
Ansibleをインストールしたら、次のコマンドでAnsibleのバージョンを確認します。
ansible --version
次の出力が表示されます。
ansible 2.9.27 config file = /etc/ansible/ansible.cfg configured module search path = ['/root/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules'] ansible python module location = /usr/lib/python3.6/site-packages/ansible executable location = /usr/bin/ansible python version = 3.6.8 (default, Nov 10 2021, 06:50:23) [GCC 8.5.0 20210514 (Red Hat 8.5.0-3.0.2)]
ステップ4–Ansibleホストを構成する
次に、Ansibleホスト構成ファイルを編集し、管理するリモートLinuxサーバーを定義する必要があります。
次のコマンドで編集できます:
nano /etc/ansible/hosts
次の行を追加します:
[web] server1 ansible_ssh_host=<manager-node-ip> ansible_ssh_port=22 ansible_ssh_user=root [database] dbserver1 ansible_ssh_host=<worker-node-ip> ansible_ssh_port=22 ansible_ssh_user=root
終了したら、ファイルを保存して閉じます。
次に、Ansible構成ファイルを編集し、非推奨の警告とホストキーのチェックを無効にします。
nano /etc/ansible/ansible.cfg
[デフォルト]の下に次の行を追加します:
deprecation_warnings=False host_key_checking = False
終了したら、ファイルを保存して閉じます。
ステップ5–Ansibleの使用方法
この時点で、Ansibleがインストールおよび構成されています。次に、Ansibleアドホックコマンドを使用してAnsibleの機能を確認する必要があります。
まず、次のコマンドを使用して、すべての管理対象ノードの接続を確認します。
ansible -m ping all
すべてが正常であれば、次の出力が表示されます。
dbserver1 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" } server1 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" }
データベースサーバーの接続のみを確認する場合は、次のコマンドを実行します。
ansible -m ping database
次の出力が得られます:
dbserver1 | SUCCESS => { "ansible_facts": { "discovered_interpreter_python": "/usr/bin/python" }, "changed": false, "ping": "pong" }
Webサーバーノードの空きメモリを確認するには、次のコマンドを実行します。
ansible -m shell -a "free -m" web
次の出力が得られます:
server1 | CHANGED | rc=0 >> total used free shared buff/cache available Mem: 1817 621 210 21 985 1006 Swap: 0 0 0
データベースサーバーノードでMySQLのバージョンを確認するには、次のコマンドを実行します。
ansible -m shell -a "mysqladmin --version" database
次の出力が表示されます。
dbserver1 | CHANGED | rc=0 >> mysqladmin Ver 8.0.26 for Linux on x86_64 (Source distribution)
ステップ6–管理対象ノードにパッケージをインストールするためのAnsiblePlaybookを作成する
Ansibleを使用すると、管理対象ノードで実行するすべてのタスクを定義するためのプレイブックを作成できます。まず、プレイブックを保存するディレクトリを作成します。
mkdir project
次に、作成したディレクトリに移動し、次のコマンドを使用してYAMLファイルを作成します。
cd project nano app.yaml
次の構成を追加します:
- name: Install Packages hosts: - web - database tasks: - name: Install php and nginx package: name: - php - httpd state: present
ファイルを保存して閉じてから、次のコマンドを使用してプレイブックを実行します。
ansible-playbook app.yaml
Ansibleプレイブックが正常に実行されると、次の出力が得られます。
PLAY [Install Packages] ********************************************************************************************************************** TASK [Gathering Facts] *********************************************************************************************************************** ok: [server1] ok: [dbserver1] TASK [Install php and apache] **************************************************************************************************************** ok: [server1] changed: [dbserver1] PLAY RECAP *********************************************************************************************************************************** dbserver1 : ok=2 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0 server1 : ok=2 changed=0 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
これで、次のコマンドを使用して、WebサーバーノードでPHPのバージョンを確認できます。
ansible -m shell -a "php -v" web
次の出力が得られます:
server1 | CHANGED | rc=0 >> PHP 7.2.24 (cli) (built: Oct 22 2019 08:28:36) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
結論
このガイドでは、Oracle Linux 8にAnsibleをインストールする方法について説明しました。また、Ansibleアドホックコマンドとプレイブックを使用して管理対象ノードをプロビジョニングする方法についても説明しました。 Ansibleを使用して、ITインフラストラクチャ全体を簡単にプロビジョニングおよび管理できるようになりました。 Atlantic.NetのVPSホスティングでお試しください!