Ansibleは、単一のマシンから複数のリモートホストを管理するための自動化ツールです。多数のリモートホストを簡単に構成できます。たとえば、複数のマシンで同じタスクを実行している場合、Ansibleにはこれらのタスクを自動化するオプションがあります。
このチュートリアルは、Debian 9(Stretch)システムにAnsibleをインストールするのに役立ちます。
ステップ1–SSHアクセスを構成する
リモートLinuxAnsibleホストのキーベースのsshを構成できます。したがって、SSHにはパスワードは必要ありません。 Ansibleではsshにパスワードを使用することもできますが、キーベースのsshの方が安全です。
Ansibleサーバーでsshキーペアを生成します:
ssh-keygen
このsshキーを介して接続する必要があるすべてのリモートホストに公開キーをコピーします。
ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]_host
ステップ2–Debian9にAnsibleをインストールする
Ansibleは、Debianシステムにインストールするための公式PPAを提供しています。
次の行を/etc/apt/sources.listに追加します ファイル:
deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main
次に、次のコマンドを実行して署名キーを追加し、Ansibleをインストールします。
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367 sudo apt update sudo apt install ansible
ステップ3–Ansibleホストとグループを構成する
サーバーは、リモートホストの管理と自動化のためにAnsibleを使用する準備ができています。必要な数のホストを用意し、単一のAnsibleサーバーでそれらを管理できます。
ここでは、Ansible hostsファイル(/ etc / ansible / hosts)でリモートシステムを定義する必要があります。同様のタイプのホストのグループを作成することもできます。ここでは、ホストをグループに適切に編成する必要があります。グループは、その下で定義されたすべてのリモートホストで1つのタスクを実行するために使用されます。
Ansibleホスト構成ファイルを編集します。例:
sudo nano /etc/ansible/hosts
ホストを追加し、グループで整理します。 ホストは複数のグループの下に追加できます 。
[webservers] web-host1 web-host2 [dbservers] db-host1
以下の画像は、グループとグループの下のホストを理解するのに役立ちます。
単一ホスト変数の構成
ホストの設定を定義する必要があります。ホスト固有のファイルは、host_varsディレクトリの下にあるhostと同じ名前(例:web-host1)である必要があります。
sudo mkdir /etc/ansible/host_vars sudo vi /etc/ansible/host_vars/web-host1
web-host1のSSH設定をこのファイルに追加します。
ansible_ssh_host: 192.168.1.15 ansible_ssh_port: 22 ansible_ssh_user: root
このホストのssh接続にステップ1を使用していない場合。認証のために、以下のいずれかの方法をweb-hosts1構成ファイルに追加することもできます。
ansible_ssh_pass: secret_password ansible_ssh_private_key_file: /home/rahul/.ssh/aws.pem
グループ変数の構成
グループ構成でグループの共通変数設定を構成できます。グループファイル名は、group_vars
の下のグループ名(例:webservers)と同じである必要があります ディレクトリ。
sudo mkdir /etc/ansible/group_vars sudo vi /etc/ansible/group_vars/webservers
このグループの下に追加されたすべてのホストによって使用されるこのファイルに共通変数を追加します。
ansible_ssh_port: 22 ansible_ssh_user: root
ステップ4–Ansibleセットアップのテスト
Ansibleセットアップはテストの準備ができています。次のようなpingモジュールを使用してすべてのホストの接続をテストするには:
ansible -m ping all
特定のホストまたはホストのグループの接続をテストするには
ansible -m ping web-host1 ## Specific host ansible -m ping webservers ## Specific group
シェルモジュールを使用してコマンドを実行することもできます。たとえば、web-host1で空きメモリをテストします。グループに対して同じタスクを実行することもできます。ホスト名の代わりにグループ名を使用してください。
ansible -m shell -a 'free -m' web-host1