通常、単一サーバーでのアプリケーションの構成と展開は簡単な作業です。ただし、複数のサーバーがある複雑なIT環境では、これは困難で時間のかかる作業になる可能性があります。 RedHatによって開発および保守されているAnsibleは、アプリケーションの展開と構成管理を簡素化するオープンソースのサーバー構成およびソフトウェアプロビジョニングツールです。 IT運用チームの負担を軽減し、サーバーの構成とアプリケーションの展開をシンプルかつ効果的な方法で自動化します。
Chefやpuppetなどの対応するツールと比較すると、Ansibleは、リモートホストと通信するためのエージェントを必要としないため、最も広く使用されているツールです。 AnsibleはSSHプロトコルを利用してリモートターゲットと通信します。そうすることで、リモートホストのCPUリソースは影響を受けません。
Ansibleラボのセットアップ
テスト環境では、Ansibleがインストールされるコントロールノードと、Ansibleコントロールノードから構成されるリモートホストの2つのノードがあります。
Ansibleコントロールノード IP 192.168.2.101 Ubuntu 20.04
リモートホスト IP 192.168.2.104 Ubuntu 20.04
さらに、sudoユーザーがいることを確認してください Ansibleコントロールノードで構成され、SSHデーモンが両方のノードで実行されていること。
余計な手間をかけずに、Ubuntu20.04にAnsibleをインストールする方法のベースに触れましょう
ステップ1:Ansibleをインストールする
すぐに、Ansibleマスターサーバーにログインし、次のようにsudoユーザーとしてAnsibleをインストールします。
$ sudo apt install ansible
これにより、Ansibleを問題なく実行するために不可欠なPython3パッケージのホストと一緒にAnsibleがインストールされます。
インストールすると、Ansibleのバージョンを次のように確認できます。
出力は、いくつかの広範な情報を提供します。 Ansibleのバージョン(この場合はAnsible 2.9.6)、モジュールとAnsible実行可能パス、およびシステムにインストールされているPythonバージョンが表示されます。
構成ファイル– ansible.cfg –は、 / etc / ansibleにあるAnsible構成ファイルです。 ディレクトリ。設定により、Ansibleの実行方法とリモートクライアントとの対話方法が決まります。さらに、ディレクトリにはhostsというインベントリファイルが含まれています。 ここで、リモートホストまたは管理対象ホストが定義されます。このチュートリアルを進めながら、このインベントリファイルでリモートホストを定義します。
ステップ2:パスワードなしのSSHログインを設定する
SSHプロトコルは、パスワード認証と公開鍵/秘密鍵認証の2つの認証方法を提供します。 SSHキーを使用して、パスワードなしのsshログイン方法を設定し、リモートホストと対話するためのより安全で便利な方法を提供します。パスワードなしのSSHログイン方式では、プレイブックファイルの実行時にパスワードを入力する必要がないため、ホストとシームレスにやり取りできます。
パスワードなしのSSHログインを設定するには、最初に次のようにSSHキーペアを生成します。
$ ssh-keygen
ENTERを最後まで押して、デフォルトの提案を受け入れます。
SSHキーペアには、秘密キーと公開キーが含まれます。 id_rsaがあります これは秘密鍵です。また、 id_rsa.pubがあります これは公開鍵です。
次に、rootユーザーをリモートホストのユーザーとして使用して、公開鍵をリモートホストにコピーします。
注
ssh公開鍵ファイルをコピーする前に、Ansible構成ファイルでリモートユーザーを次のように構成します。
$ sudo vim /etc/ansible/ansible.cfg
リモートユーザーをrootに設定します。
remote_user=root
ファイルを保存します。
次に、リモートホストに移動し、 / etc / ssh / ssh_configを編集してリモートルートログインを有効にします。 ファイル。
$ sudo vim /etc/ssh/ssh_config
以下の行を追加してください
PermitRootLogin yes
もう一度、保存して終了します。
これで、次に示すようにSSH公開鍵をリモートホストにコピーできます。
$ ssh-copy-id [email protected]
rootユーザーとして初めてログインする場合は、次の画像に示すようなプロンプトが表示されます。 「はい」と入力するだけで接続を続行できます。リモートホストのルートパスワードを入力すると、SSHキーがルートホームディレクトリに追加されます。
以降のログインでは、パスワードを入力する必要はありません。これを確認するには、リモートホストを終了して、もう一度ログインしてみてください。
$ ssh [email protected]
これにより、図のようにリモートホストのシェルに自動的に移動します。
完全!パスワードなしのSSHログイン設定が完了しました。次に、ApacheWebサーバーをインストールするプレイブックファイルを作成します。
ステップ3:Ansible構成ファイルにリモートホストを追加します
次に、Ansibleインベントリファイルでリモートホストを定義します。デフォルトでは、 / etc / ansible / hostsです。 ファイル。そのため、ファイルを開きます。
$ sudo vim /etc/ansible/hosts
ファイルホスト INI形式で構成されています。 ウェブサーバーの下にホストのIPアドレスを追加します グループ名。
[webservers]
192.168.2.104
インベントリファイルを保存して閉じます。インベントリファイルで定義されているホストを確認するには、次を実行します。
$ ansible webservers --list-hosts
または、すべてのホストグループのすべてのホストを確認するには、次のコマンドを実行します。
$ ansible all --list-hosts
次に、リモートホストにAnsiblePythonモジュールが存在するかどうかをテストします。
$ ansible -m ping webservers
注:
ping モジュールはICMPpingコマンドではありません。 Python3モジュールがインストールされているかどうかとSSHの存在を確認するのは簡単なテストです。
以下の出力は、コマンドが成功したことを示しています。出力には、ウェブサーバーで定義されたリモートホストのIPも表示されます。 グループ。複数のグループで複数のホストを定義している場合は、すべてを使用してください オプション。
$ ansible -m ping all
ステップ4:リモートホストを構成するためのプレイブックファイルを作成する
リモートホストを定義したら、ApacheWebサーバーをインストールするためのプレイブックファイルを作成します。プレイブックファイルは、リモートホストで実行されるタスクを規定するAnsibleのYAMLファイルです。
$ sudo vim /etc/ansible/apache.yml
プレイブックファイルは以下のように定義されています。ファイルは3つのハイフン(—)で始まることに注意してください。また、くぼみにも注意してください。
最後に、プレイブックファイルを次のように実行します。
$ ansible-playbook /etc/ansible/apache.yml
実行時に、プレイブックはタスクを細心の注意を払って実行し、端末上のすべてのアクションを表示します。 Apache Webサーバーをインストールし、サービスを開始します。
Webサーバーが正常にインストールされたことを確認するには、ブラウザを起動し、次のようにリモートホストのIPを参照します。
http://server-ip/
概要
Ansibleは、DevOpsで広く使用されている自動化ツールであり、サーバー上でアプリケーションを構成およびデプロイするために何千もの開発者やシステム管理者によって使用されています。時間を節約し、複雑なITインフラストラクチャで多数のサーバーを処理するために必要な労力を最小限に抑えます。 Ubuntu20.04にAnsibleを快適にインストールして構成できることを願っています。