Ansibleは、無料のオープンソースIT自動化および構成ツールです。ほとんどすべてのLinuxディストリビューションで利用可能であり、LinuxおよびWindowsシステムの管理に使用できます。現在、AnsibleはAWS、仮想マシン、コンテナなどのEC2インスタンスの管理にも使用されています。管理対象ホストにエージェントは必要ありませんが、ssh接続のみが必要です。
この記事では、Ubuntu 20.04 LTS/21.04に最新バージョンのAnsibleをインストールする方法について説明します
Ansibleのシステム要件
- 最小インストール数のUbuntu20.04LTS / 21.04
- root権限を持つsudoユーザー
- 2 CPU / vCPU
- 2GB以上のRAM
- 20GBハードドライブ
- インターネット接続(ローカルに構成されたaptリポジトリサーバーがない場合)
以下は、ansibleデモンストレーションのための私のラボセットアップの詳細です。
- Ansibleコントロールノード– control.example.com(192.168.1.112)
- Ansible管理対象ノード– node1.example.com&node2.example.com
- 特権を持つ制御ノードと管理対象ノードのsysopssudoユーザー。
注:ここで、node1はUbuntuシステムであり、node2はCentOSシステムであり、コントロールノードはansibleをインストールするシステムです。シスオペは各ホストですでに作成されていると思います。
パスワードの入力を求めずにすべてのコマンドを実行するようにsudoユーザー(sysops)を構成するには、各管理対象ホストで次のコマンドを実行します
echo "sysops ALL=(ALL) NOPASSWD:ALL" > /etc/sudoers.d/sysops
Ansibleのインストール手順に飛び込みましょう
ステップ1)コントロールノードに更新を適用する
Ubuntu 20.04 LTS / 21.04システムにログインし、以下のaptコマンドを実行して更新を適用します。
$ sudo apt update $ sudo apt updgrade -y
すべてのアップデートがインストールされたら、システムを1回再起動します。
$ sudo reboot
ステップ2)依存関係をインストールしてAnsibleリポジトリを構成する
次のaptコマンドを実行して、ansibleの依存関係をインストールします
$ sudo apt install -y software-properties-common
依存関係がインストールされたら、Ansible用にPPAリポジトリを構成し、実行します
$ sudo add-apt-repository --yes --update ppa:ansible/ansible
次に、aptコマンドの下で実行してリポジトリを更新します。
$ sudo apt update
ステップ3)最新バージョンのansibleをインストールする
これで、Ubuntu 20.04 LTS/21.04に最新バージョンのAnsibleをインストールする準備が整いました。次のコマンドを実行してください。
$ sudo apt install -y ansible
Ansibleが正常にインストールされたら、コマンドを実行してバージョンを確認します
$ ansible --version
上記の出力は、Ansibleバージョン2.9.6がインストールされていることを示しています。
ステップ4)SSHキーを設定し、管理対象ノード間で共有します
次に、コントロールノードからsysopsユーザーのSSHキーを生成し、管理対象ホスト間で共有しましょう。 ssh-keygenコマンドを実行します
$ ssh-keygen
入力を求めるプロンプトが表示されたらEnterキーを押します。出力は以下に表示されます
注:制御ノードの/ etc/hostsファイルに管理対象ホストエントリを追加します。これは、ローカルDNSサーバーが構成されていない場合にのみ必要です。
192.168.1.115 node1.example.com 192.168.1.120 node2.example.com
コントロールと管理対象ホスト間でsshキーを共有するには、ssh-copy-idコマンドの例を以下に示します
。$ ssh-copy-id node1.example.com $ ssh-copy-id node2.example.com
上記のコマンドの出力は次のようになります
ステップ5)ansiblecfgとインベントリファイルを作成する
プロジェクトごとに個別のansible.cfgファイルとインベントリファイルを用意することを常にお勧めします。デモンストレーションの目的で、プロジェクト名としてデモを使用しています。したがって、最初にmkdirコマンドを実行してプロジェクトフォルダを作成します。
$ mkdir demo
デフォルトのansble.cfgファイルを〜/demoフォルダーにコピーします
$ cp /etc/ansible/ansible.cfg ~/demo/
〜/ demo / ansible.cfgファイルを編集し、次のパラメーターを設定します
$ vi ~/demo/ansible.cfg
デフォルトのセクションの下
inventory = /home/sysops/demo/inventory remote_user = sysops host_key_checking = False
Priligence_escalationセクションの下
become=True become_method=sudo become_user=root become_ask_pass=False
ファイルを保存して閉じます。それでは、〜/ demo/ansible.cfgファイルで定義したインベントリファイルを作成しましょう。
$ vi ~/demo/inventory [dev] node1.example.com [prod] node2.example.com
ファイルを保存して終了します
最後に、ANSIBLE_CONFIG変数を宣言して、デモプロジェクトのansible.cfgファイルを使用するようにansibleに指示し、次のコマンドを実行します。
$ export ANSIBLE_CONFIG=/home/sysops/demo/ansible.cfg $ echo "export ANSIBLE_CONFIG=/home/sysops/demo/ansible.cfg" >> ~/.profile
デモフォルダからansible–versionコマンドを実行して、ansible構成を確認します
$ cd demo/ $ ansible --version
すばらしい、Ansibleはプロジェクトのansible構成ファイルを読み取っています。 ansibleアドホックコマンドを使用して、管理対象ノードの接続を確認しましょう。
$ ansible all -m ping
注:デモフォルダからansibleコマンドを実行してください。
コマンドの出力は次のようになります:
この出力は、制御ノードから管理対象ホストへの接続が確立されていることを確認します。
ステップ6)管理対象ホストにパッケージをインストールするためのAnsibleプレイブックを作成する
Ansibleのインストールと構成を確認するために、demoフォルダーの下にpackages.yamlという名前のサンプルプレイブックを作成しましょう。
$ vi packages.yaml --- - name: Playbook to Install Packages hosts: - dev - prod tasks: - name: Install php and mariadb package: name: - php - mariadb-server state: present
ファイルを保存して閉じます
次に、ansible-playbookコマンドを使用してプレイブックを実行します。
$ ansible-playbook packages.yaml
出力:
上記の出力は、プレイブックが正常に実行されたことを確認します。結果を確認するには、次のアドホックコマンドを実行します
$ ansible dev -m shell -a 'dpkg -l | grep -E "php|mariadb"' $ ansible prod -m shell -a 'rpm -qa | grep -E "php|mariadb"'
これで記事は終わりです。この記事が有益であると感じた場合は、遠慮なく共有してください。ご不明な点がございましたら、下のコメントセクションにご記入ください。
また読む :AnsiblePlaybookでハンドラーを使用する方法