Ansible Linux、Windows、Mac、ネットワークデバイス、VMwareなど、複数のデバイスを管理する必要がある場合は、最近最適なツールです。 Ansibleを人気のあるものにしているのは、エージェントの機能が少なく、きめ細かい制御ができることです。 Pythonを使用したことがあるか、 yamlの経験がある場合 、Ansibleでくつろげます。 Ansibleをインストールする方法を確認するには、ここをクリックしてください。
Ansibleコアモジュールを使用すると、プレイブックを作成したい場合にほとんどすべてを管理できますが、解決しようとしている問題の役割をすでに作成している人がいることがよくあります。例を見てみましょう。LinuxマシンでNTPクライアントを管理したい場合、ノードに適用できるロールを作成するか、 ansible-galaxyを使用するかの2つの選択肢があります。 誰かがあなたのためにすでに書いた/テストした既存の役割をダウンロードするため。 Ansible銀河はほとんどすべての領域で役割を果たしており、これらはさまざまな問題に対応しています。 https://galaxy.ansible.com/にアクセスして、ドメインとその一般的な役割についてのアイデアを得ることができます。ギャラクシーリポジトリに公開されている各役割は徹底的にテストされ、ユーザーによって評価されているため、それを使用した他の人々がどのようにそれを気に入ったかがわかります。
NTPのアイデアを継続するために、銀河からNTPの役割を検索してインストールする方法は次のとおりです。
まず、ヘルプフラグを指定してansible-galaxyを実行し、どのオプションが提供されるかを確認します
[[email protected] ~]# ansible-galaxy --help
上記の出力からわかるように、いくつかの興味深いオプションが示されています。ntpクライアントを管理する役割を探しているので、検索オプションを試して、探しているものを見つけるのがどれだけ優れているかを確認しましょう。
[[email protected] ~]# ansible-galaxy search ntp
上記のコマンドの切り捨てられた出力は次のとおりです。
上記の出力からわかるように、検索に基づいて341の一致が見つかりました。これは、これらの役割の多くがNTPに関連していないことを意味します。つまり、検索には多少の改良が必要ですが、いくつかのNTP役割を取得できたため、さらに深く掘り下げて確認できます。これらの役割は何ですか。ただし、その前に、ここで従う命名規則について説明します。同じ名前の役割を簡単に区別できるように、役割の名前の前には常に作成者名が付いています。したがって、NTPロールを作成し、それをギャラクシーレポに公開した場合、同じ名前の他のレポと混同されることはありません。
それが邪魔にならないように、LinuxマシンにNTPロールをインストールする作業を続けましょう。 bennojoy.ntpを試してみましょう この例では、これを使用する前に、いくつかのことを理解する必要があります。この役割は、実行しているansibleのバージョンと互換性がありますか。また、この役割のライセンスステータスは何ですか。これらを理解するために、ansible-galaxyコマンドの下で実行してみましょう
[[email protected] ~]# ansible-galaxy info bennojoy.ntp
わかりました。これは、最小バージョンが1.4で、ライセンスがBSDであることを示しています。ダウンロードしてみましょう
[[email protected] ~]# ansible-galaxy install bennojoy.ntp - downloading role 'ntp', owned by bennojoy - downloading role from https://github.com/bennojoy/ntp/archive/master.tar.gz - extracting bennojoy.ntp to /etc/ansible/roles/bennojoy.ntp - bennojoy.ntp (master) was installed successfully [[email protected] ~]# ansible-galaxy list - bennojoy.ntp, master [[email protected] ~]#
新しくインストールされた役割を見つけましょう。
[[email protected] ~]# cd /etc/ansible/roles/bennojoy.ntp/ [[email protected] bennojoy.ntp]# ls -l total 4 drwxr-xr-x. 2 root root 21 May 21 22:38 defaults drwxr-xr-x. 2 root root 21 May 21 22:38 handlers drwxr-xr-x. 2 root root 48 May 21 22:38 meta -rw-rw-r--. 1 root root 1328 Apr 20 2016 README.md drwxr-xr-x. 2 root root 21 May 21 22:38 tasks drwxr-xr-x. 2 root root 24 May 21 22:38 templates drwxr-xr-x. 2 root root 55 May 21 22:38 vars [[email protected] bennojoy.ntp]#
この新しくダウンロードしたロールをElasticsearchCentOSノードで実行します。これが私のhostsファイルです
[[email protected] ~]# cat hosts [CentOS] elastic7-01 ansible_host=192.168.1.15 ansibel_port=22 ansible_user=linuxtechi [[email protected] ~]#
以下のansiblepingモジュールを使用してノードにpingを実行してみましょう。
[[email protected] ~]# ansible -m ping -i hosts elastic7-01 elastic7-01 | SUCCESS => { "changed": false, "ping": "pong" } [[email protected] ~]#
エラスティックノードでの現在のntp.confは次のようになります。
[[email protected] ~]# head -30 /etc/ntp.conf
私はインドにいるので、サーバーを追加しましょう in.pool.ntp.org ntp.confに。ロールのデフォルトディレクトリにある変数を編集する必要があります。
[[email protected] ~]# vi /etc/ansible/roles/bennojoy.ntp/defaults/main.yml
「ntp_server」パラメータでNTPサーバーアドレスを変更します。更新後は次のようになります。
最後に、この役割を呼び出すプレイブックを作成します。
[[email protected] ~]# vi ntpsite.yaml --- - name: Configure NTP on CentOS/RHEL/Debian System become: true hosts: all roles: - {role: bennojoy.ntp}
ファイルを保存して終了します
これで、この役割を実行する準備が整いました。以下のコマンドを使用して、ntpプレイブックを実行してください。
[[email protected] ~]# ansible-playbook -i hosts ntpsite.yaml
上記のntpansiblePlaybookの出力は、次のようになります。
更新されたファイルを確認しましょう。 Elastic Nodeに移動し、ntp.confファイルの内容を表示します
[[email protected] ~]# cat /etc/ntp.conf #Ansible managed driftfile /var/lib/ntp/drift server in.pool.ntp.org restrict -4 default kod notrap nomodify nopeer noquery restrict -6 default kod notrap nomodify nopeer noquery restrict 127.0.0.1 [[email protected] ~]#
要件を満たすロールが見つからない場合に備えて、angalaxyはカスタムロールのディレクトリ構造を作成するのに役立ちます。これは、標準化されたファイル構造に組み立てられた変数、ハンドラー、テンプレートなどとともにプレイブックを支援します。独自の役割を作成しましょう。ansible-galaxyに構造を作成させることは常に良い習慣です。
[[email protected] ~]# ansible-galaxy init pk.backup - pk.backup was created successfully [[email protected] ~]#
ツリーコマンドを使用して、役割の構造を確認します。
これらのディレクトリとファイルのそれぞれが何のためにあるのかを簡単に説明しましょう。これらはそれぞれ目的を果たします。
最初のものはデフォルトです 変数を含むファイルを含むディレクトリの優先順位が最も低くなります。同じ変数がvarディレクトリに割り当てられている場合は、デフォルトよりも優先されます。 ハンドラー ディレクトリはハンドラーをホストします。 ファイル およびテンプレート 自分の役割でコピーする必要のあるファイルとjinjaテンプレートを保持します それぞれプレイブックで使用されます。 タスク ディレクトリは、タスクを含むプレイブックが保存される場所です。 varディレクトリは、roleで使用される変数をホストするすべてのファイルで構成されます。テストディレクトリは、役割のテストに使用できるサンプルインベントリとテストプレイブックで構成されています。 メタディレクトリ 他の役割への依存関係と作成者情報で構成されます。
最後に、 README.md ファイルは、説明や、この役割と互換性のあるansibleの最小バージョンなどの一般的な情報で構成されています。