Ubuntu18.04にAnsibleをインストールして構成する方法

前書き

構成管理システムは、管理者と運用チームが多数のサーバーを簡単に制御できるように設計されています。それらを使用すると、中央の場所から自動化された方法で多くの異なるシステムを制御できます。

ChefやPuppetなど、Linuxシステムで利用できる一般的な構成管理システムは多数ありますが、これらのシステムは通常、多くの人が望んでいる、または必要としているよりも複雑です。 [Ansible](https://www.ansible.com/)は、開始に必要なオーバーヘッドが少ないため、これらのオプションの優れた代替手段です。

このチュートリアルでは、Ubuntu 18.04サーバーにAnsibleをインストールする方法について説明し、ソフトウェアの使用方法に関する基本的な知識を紹介します。

**Ansibleはどのように機能しますか? **

Ansibleは、Ansibleコンポーネントがインストールおよび構成されたクライアントコンピューターを構成することによって機能します。

通常のSSHチャネルを介して通信し、リモートコンピューターから情報を取得し、コマンドを発行し、ファイルをコピーします。したがって、Ansibleシステムでは、クライアントコンピューターに他のソフトウェアをインストールする必要はありません。

これは、Ansibleがサーバー管理を簡素化する方法です。 SSHポートを公開するサーバーは、ライフサイクルのどの段階にあるかに関係なく、Ansibleの構成の傘下に置くことができます。つまり、SSHを介して管理できるすべてのコンピューターは、Ansibleを介して管理することもできます。

Ansibleはモジュラーアプローチを採用しており、メインシステムの機能を使用して特定のシナリオを処理するように簡単に拡張できます。モジュールは任意の言語で記述でき、標準のJSONで通信できます。

構成ファイルは、その表現力と一般的なマークアップ言語との類似性のために、主にYAMLデータシリアル化形式で記述されています。 Ansibleは、コマンドラインツールまたはその構成スクリプト(プレイブックと呼ばれる)を介してホストと対話できます。

準備 ##

このチュートリアルに従うには、次のものが必要です。

サーバーをお持ちでない学生は[こちら](https://cloud.tencent.com/product/cvm?from=10680)から購入できますが、個人的には無料のTencent Cloud [Developer Lab](https://cloud.tencent.com/developer/labs?from=10680)を使用して実験し、[サーバーを購入]( https://cloud.tencent.com/product/cvm?from=10680)。

ステップ1-Ansibleをインストールする

さまざまなサーバーを管理する方法としてAnsibleの使用を開始するには、少なくとも1台のコンピューターにAnsibleソフトウェアをインストールする必要があります。

最新バージョンのAnsiblefor Ubuntuを入手するには、プロジェクトのPPA(Personal Package Archive)をシステムに追加します。ただし、この操作を実行する前に、まずパッケージインデックスを更新し、 software-properties-commonパッケージをインストールする必要があります。このソフトウェアは、これと他の独立したソフトウェアリポジトリをより簡単に管理できます。

sudo apt update
sudo apt install software-properties-common

次に、次のコマンドを入力してAnsiblePPAを追加します。

sudo apt-add-repository ppa:ansible/ansible

ENTERを押してPPAの追加を受け入れます。

次に、システムのパッケージインデックスを再度更新して、PPAで使用可能なパッケージを認識できるようにします。

sudo apt update

この更新後、Ansibleソフトウェアをインストールできます。

sudo apt install ansible

これで、Ansibleサーバーには、ホストの管理に必要なすべてのソフトウェアが含まれています。

ステップ2-AnsibleホストへのSSHアクセスを構成します

前述のように、Ansibleは主にSSHを介してクライアントコンピューターと通信します。もちろん、パスワードベースのSSH認証を処理できますが、SSHキーを使用すると作業が簡単になります。

Ansibleサーバーで、 catコマンドを使用して、root以外のユーザーのSSH公開鍵ファイルの内容を端末の出力に出力します。

cat ~/.ssh/id_rsa.pub

生成された出力をクリップボードにコピーしてから、新しいターミナルを開き、SSHを使用してAnsibleホストの1つに接続します。

ssh sammy@ansible_host_ip

クライアントコンピューターの** root **ユーザーに切り替えます。

su -

** root **ユーザーとして、 〜/ .sshディレクトリで authorized_keysを開きます。

nano ~/.ssh/authorized_keys

ファイルに、AnsibleサーバーユーザーのSSHキーを貼り付け、ファイルを保存してエディターを閉じます( CTRL + X Yを押してから、 ENTERを押します)。次に、 exitコマンドを実行して、ホストの非ルートユーザーに戻ります。

exit 

最後に、Ansibleは / usr / bin / pythonにあるpythonインタープリターを使用してモジュールを実行するため、Ansibleが通信できるようにホストにPython2をインストールする必要があります。次のコマンドを実行して、ホストのパッケージインデックスを更新し、 pythonパッケージをインストールします。

sudo apt update
sudo apt install python

この後、 exitコマンドを再度実行して、クライアントとの接続を閉じることができます。

exit

Ansibleサーバーコントロールを使用するサーバーごとに、このプロセスを繰り返します。次に、Ansibleの hostsファイルを使用してこれらのホストに接続するようにAnsibleサーバーを構成します。

手順3-Ansibleホストを設定する

Ansibleは、 hostsファイルを介して認識しているすべてのサーバーを追跡します。他のコンピューターとの通信を開始する前に、まずこのファイルを設定する必要があります。

以下に示すように、 sudo権限でファイルを開きます。

sudo nano /etc/ansible/hosts

ファイル内には、コメントアウトされた(前に が付いた)構成例が多数表示されます。各ホストにリストされているホストはすでに構成されているため、これらの例は実際には機能しません。ただし、将来、より複雑なシナリオを実装する場合は、これらの例をファイルに保存して、構成に役立てます。

` ホストのファイルは非常に柔軟性があり、いくつかの異なる方法で構成できます。使用する構文は次のとおりです。

[ group_name]
alias ansible_ssh_host=your_server_ip

この例では、 group_nameは、単語を使用してその下にリストされているサーバーを参照できるようにする組織タグですが、 aliasは単に特定のサーバーの名前を参照します。

したがって、このシナリオでは、Ansibleを使用して3つのサーバーを制御することを想定しています。この時点で、Ansibleサーバーから次のように入力してこれらのサーバーにアクセスできます。

ssh root@ansible_host_ip

パスワードを正しく設定している場合は、パスワードの入力を求められることはありません。デモンストレーションの目的で、ホストのIPアドレスは 203.0.113.1 203.0.113.2、および 203.0.113.3であると想定します。これらを個別に host1 host2host3として、または serversという名前のグループとして参照できるように設定します。

これは、この目的のために hostsファイルに追加する必要があるブロックです。

[ servers]
host1 ansible_ssh_host=203.0.113.1
host2 ansible_ssh_host=203.0.113.2
host3 ansible_ssh_host=203.0.113.3

ホストは複数のグループに属することができ、グループはそのすべてのメンバーのパラメーターを構成できます。今すぐ試してみましょう。

現在の設定では、Ansibleを使用してこれらのホストのいずれかに接続しようとすると、コマンドは失敗します(rootとして実行していない場合)。これは、SSHキーがリモートシステムの** root **ユーザーに埋め込まれており、Ansibleがデフォルトで現在のユーザーとして接続しようとするためです。接続を試みると、次のエラーが発生します。

host1 | UNREACHABLE!=>{"changed":false,"msg":"Failed to connect to the host via ssh.","unreachable":true}

Ansibleサーバーでは、** sammy **という名前のユーザーを使用しています。 Ansibleは、 ssh sammy @ serverを使用して各ホストに接続しようとします。 ** sammy **ユーザーもリモートシステムにいない場合、これは機能しません。

「server」グループ内のすべてのサーバーにrootユーザーとして接続するように指示するファイルを作成できます。

このために、Ansible構成構造に group_varsという名前のディレクトリを作成します。このフォルダーには、構成するグループごとにYAML形式のファイルを作成できます。

sudo mkdir /etc/ansible/group_vars
sudo nano /etc/ansible/group_vars/servers

ここに設定を入れることができます。 YAMLファイルは「---」で始まるので、この部分を忘れないようにしてください。

---
ansible_ssh_user: root

完了したら、このファイルを保存して閉じます。

グループの関連付けに関係なく、各サーバーの構成の詳細を指定する場合は、これらの詳細をファイル / etc / ansible / group_vars / allに入れることができます。 / etc / ansible / host_varsディレクトリにエイリアスで名前が付けられたファイルを作成することにより、各ホストを構成できます。

ステップ4-単純なAnsibleコマンドを使用する

ホストをセットアップし、ホストに正常に接続するための十分な構成の詳細が得られたので、最初のコマンドを試すことができます。

次のコマンドを入力して、構成したすべてのサーバーにpingを実行します。

ansible -m ping all
host1 | SUCCESS =>{"changed":false,"ping":"pong"}
​
host3 | SUCCESS =>{"changed":false,"ping":"pong"}
​
host2 | SUCCESS =>{"changed":false,"ping":"pong"}

これは、Ansibleがすべてのホストに接続されていることを確認するための基本的なテストです。

allはすべてのホストを意味します。グループは簡単に指定できます。

ansible -m ping servers

単一のホストを指定することもできます。

ansible -m ping host1

複数のホストをコロンで区切ることで指定できます。

ansible -m ping host1:host2

- m pingコマンドの一部は、Ansibleが「ping」モジュールを使用するための命令です。これらは基本的に、リモートホストで実行できるコマンドです。 pingモジュールは、Linuxの通常のpingユーティリティのようにさまざまな方法で動作しますが、Ansible接続をチェックします。

pingモジュールは実際にはパラメータを受け入れませんが、別のコマンドを試して、どのように機能するかを確認できます。 -aと入力して、スクリプトにパラメーターを渡します。

「シェル」モジュールを使用すると、端末コマンドをリモートホストに送信して、結果を取得できます。たとえば、host1マシンのメモリ使用量を調べるには、次を使用できます。

ansible -m shell -a 'free -m' host1
host1 | SUCCESS | rc=0>>
    total       used       free     shared    buffers     cached
Mem:3954227372601493-/+ buffers/cache:1193834
Swap:000

このようにして、Ansibleサーバーが構成され、ホストとの通信と制御を正常に行うことができます。

結論として ##

このチュートリアルでは、Ansibleを構成し、各ホストと通信できることを確認しました。また、 ansibleコマンドを使用して、簡単なタスクをリモートで実行します。

Ansibleのインストールと構成に関連するチュートリアルの詳細については、[Tencent Cloud + Community](https://cloud.tencent.com/developer?from=10680)にアクセスして詳細を確認してください。


参照:「Ubuntu18.04にAnsibleをインストールして構成する方法」

Recommended Posts

Ubuntu18.04にAnsibleをインストールして構成する方法
Ubuntu18.04にGogsをインストールして構成する方法
Ubuntu18.04にCyberpanelをインストールして構成する方法
Ubuntu16.04にownCloudをインストールして構成する方法
Ubuntu16.04にownCloudをインストールして構成する方法
Ubuntu18.04にGitLabをインストールして構成する方法
Ubuntu16.04にElasticsearchをインストールして構成する方法
Ubuntu14.04にPostGISをインストールして構成する方法
Ubuntu18.04にVNCをインストールして構成する方法
Ubuntu16.04にSphinxをインストールして構成する方法
Ubuntu14.04にOrientDBをインストールして構成する方法
Ubuntu12.04にAppScaleをインストールして構成する方法
Ubuntu14.04にPostGISをインストールして構成する方法
Ubuntu 16.04 /18.04にPycharmとIpythonをインストールする方法
CentOS7にElasticsearchをインストールして構成する方法
Ubuntu16.04にphpMyAdminをインストールして保護する方法
Ubuntu20.04にDockerをインストールして使用する方法
CentOS8にVNCをインストールして構成する方法
Ubuntu18.04にCurlをインストールして使用する方法
Ubuntu18.04にComposerをインストールして使用する方法
Ubuntu18.04にWineをインストールして使用する方法
Ubuntu16.04にphpMyAdminをインストールして保護する方法
CentOS8にRedisをインストールして構成する方法
Ubuntu20.04にComposerをインストールして使用する方法
Ubuntu14.04にBaasBoxをインストールして使用する方法
Ubuntu16.04にPostgreSQLをインストールして使用する方法
CentOS6にphpMyAdminをインストールして構成する方法
CentOS8にOwncloudをインストールして構成する方法
Ubuntu16.04にDockerをインストールして使用する方法
CentOS8にRedmineをインストールして構成する方法
Ubuntu20.04にRubyをインストールする方法
Ubuntu20.04にMemcachedをインストールする方法
Ubuntu20.04にMySQLをインストールする方法
Ubuntu20.04にVirtualBoxをインストールする方法
UbuntuにProtobuf3をインストールするための詳細なチュートリアル
Ubuntu20.04にNginxをインストールする方法
Ubuntu20.04にApacheをインストールする方法
Ubuntu20.04にGitをインストールする方法
Ubuntu16.04にNode.jsをインストールする方法
Ubuntu20.04にMySQLをインストールする方法
UbuntuにMySQLをインストールして構成する
Ubuntu20.04にVagrantをインストールする方法
Ubuntu14.04にBacula-Webをインストールする方法
Ubuntu16.04にPostgreSQLをインストールする方法
Ubuntu20.04にGitをインストールする方法
Ubuntu18.04にAnaconda3をインストールする方法
Ubuntu18.04にMemcachedをインストールする方法
Ubuntu16.04にJenkinsをインストールする方法
Ubuntu14.04にMemSQLをインストールする方法
Ubuntu20.04にGoをインストールする方法
Ubuntu16.04にMongoDBをインストールする方法
Ubuntu14.04にMailpileをインストールする方法
Ubuntu16.04にPrestaShopをインストールする方法
Ubuntu20.04にSkypeをインストールする方法
Ubuntu20.04にJenkinsをインストールする方法
Ubuntu18.04にPython3.8をインストールする方法
Ubuntu18.04にKVMをインストールする方法
Ubuntu20.04にKVMをインストールする方法
ubuntu14.04にopencv3.0.0をインストールする方法
Ubuntu20.04にAnacondaをインストールする方法
Ubuntu16.04にPrometheusをインストールする方法