GNU/Linux >> Linux の 問題 >  >> Linux

方法:Ansibleを使い始める

はじめに

Ansibleは、1つの中央デバイスから複数のデバイスを管理できるシステム管理ツールです。 PuppetやChefなどのツールと比較しますが、これらのパッケージではクライアントシステムにエージェントをインストールする必要がありますが、Ansibleは、エージェントをまったく必要とせずにsshを介してコマンドを渡すことで動作します。 Ansibleが実行できる管理タスクのいくつかを見ていきます。これにより、Ansibleが自分に適しているかどうかをより正確に把握できます。


前提条件

  • Linux、BSD、またはOSX制御デバイス。
  • コントロールデバイスからクライアントデバイスへのsshアクセス(ファイアウォールとクレデンシャル)。 Ansibleはクライアントデバイスにアクセスするためにsshキーの使用を好みますが、ユーザー名とパスワードを使用するオプションも示します。
  • 制御デバイスにインストールされているPython2.6または2.7。

インストール

Ansibleは、主要なLinux / BSD/OSXディストリビューションのパッケージマネージャーから入手できます。 Pythonのpipインストーラーからも利用できます。

CentOS / Fedora:

sudo yum install ansible

Ubuntu(最初にAnsible PPAを追加する必要があります):

sudo apt-get install software-properties-common
sudo apt-add-repository ppa:ansible/ansible
sudo apt-get update
sudo apt-get install ansible

Arch Linux:

pacman -S ansible

FreeBSD:

sudo pkg install ansible

Pythonパッケージマネージャー、pip(OSXユーザーはpipを使用してインストールすることもできます):

sudo pip install ansible

Ansibleクライアントへのアクセスの設定

ホスト

Ansibleを使用する利点の1つは、同じ端末インターフェイスから1つの制御デバイスから複数のクライアントを管理できることです。 /etc/ansible/hostsにグループを作成することで、機能、場所、OSに基づいてクライアントサーバーのさまざまなグループを指定できます。 ファイル。

[mailservers]
smtp.orl-fl.example.com
smtp.dal-tx.example.com

[db_servers]
db.orl-fl.example.com
db.sfo-ca.example.com

[orlando]
smtp.orl-fl.example.com
db.orl-fl.examle.com

[nameservers]
ns[01:12].example.com

角かっこで囲まれた名前[] グループ名を定義し、それに続くリストにホストを含​​めます。 ns[01:12].example.comのように、角かっことコロンを使用してホスト名パターン内の連続範囲を示すこともできます。 上記。

クライアントは複数のグループに存在する場合があります。グループ名はグループリストのエイリアスとして機能し、特定のAnsibleコマンドまたはプレイブックでターゲットとするサーバーのグループを簡単に参照できるようにします。

sshキー

Ansibleは、Ansibleコマンドを実行するコントロールサーバーがsshキーを使用してクライアントホストにアクセスできる場合に最適に機能します。追加オプションなしでAnsibleコマンドを実行すると、デフォルトでsshキーを介してリモートクライアントにアクセスしようとします。

ヒント:秘密のsshキーをパスフレーズで保護している場合、Ansibleで開くsshセッションごとに復号化する必要があるたびに、そのパスフレーズを入力しなければならないのは不便で非効率的です。このプロセスを簡素化するには、ssh-agentで別のシェルを開きます 。このシェルに秘密鍵をインポートする場合、暗号化されていない秘密鍵を追加するには、パスフレーズを1回入力するだけで済みます。

ssh-agent bash
ssh-add ~/.ssh/id_rsaを追加

最初のコマンドは、新しいbashシェルを開きます。 ssh-add コマンドは秘密鍵のパスフレーズの入力を求め、RSA秘密鍵をこのシェルにインポートします。もちろん、id_ecdsaを使用している場合は、適切な秘密鍵に置き換えることができます。 またはid_dsa 、たとえば。

sshアクセス(sshキーなし)

sshキーが設定されていないクライアントサーバーがある場合でも、現在のユーザーでAnsibleを使用して、ユーザーパスワードの入力を求めることができます。たとえば、pingを使用したい場合があります db_servers内のすべてのホストを確認するモジュール グループはレスポンシブです。

ansible db_servers -m ping --ask-pass

このコマンドは、最初に、db_servers内のすべてのサーバーにアクセスするために使用する現在のユーザーのsshパスワードの入力を求めます。 各クライアントでモジュールを実行する前にグループ化します。

注:このコマンドでは、ユーザーが各クライアントに存在し、sshアクセスが許可されており、同じパスワードを使用している必要があります。

また、ping モジュールは、ネットワーク接続をテストするICMPpingとは関係ありません。 ansibleでの使用 コマンドは、指定されたユーザーがクライアントサーバーにアクセスできること、およびクライアントサーバーにAnsibleが使用できるバージョンのPythonがあることを確認します。 ping モジュールはpongを返す必要があります 正常に完了したときの応答。

sshアクセス(パスワード付き)

デフォルトのAnsibleコマンドは、sshキーの使用に加えて、パスワードなしのsudoを使用していることも前提としています。 sudoアクセスを取得するためにパスワードを必要とするクライアントサーバーがある場合は、追加のオプションを使用してsudoになり、sudoパスワードの入力を求めることができます。したがって、たとえば、mailservers内のすべてのサーバーを再起動します ユーザー名usernameを使用してグループ化する 。

ansible mailservers -a "/sbin/reboot" -u username --become --ask-become-pass

--become オプションは、ユーザーが特権ユーザー(sudo)になり、--ask-become-passになることを示します。 オプションは、コマンドを実行する前に、その特権ユーザーになるためのパスワードを要求するようにAnsibleに促します。

--become および--ask-become-pass optionsは、古い--sudoを置き換えることを目的とした新しいオプション(Ansibleバージョン1.9以降)です。 および--ask-sudo-pass-K )オプション、それぞれ。これらの古いバージョンは引き続き機能します。 sudoの置き換え become これらのオプションの範囲を広げて、sudo以外の手段を使用するツールとの統合を含めます 特権の昇格を有効にします。

いくつかの基本的なAnsibleCLIコマンド

Ansibleの真の力はプレイブックの使用にありますが、ansibleを実行することもできます。 プレイブックを作成する意味がない場合や、クライアントデバイスのグループに単一のコマンドをプッシュするだけでよい場合に、クライアントをすばやく管理するコマンド。

ansible コマンドはパターンansible [group] OPTIONSに従います 。

Yumアップデートを実行する

たとえば、mailservers内のサーバーでyumupdatesを実行したい場合 グループの場合、次のAnsibleコマンドを使用してこのタスクを実行できます:

ansible mailservers -m yum -a "name=* state=latest" --become

このコマンドは、mailservers内のすべてのサーバーを更新します yumでグループ化 モジュール(-m )。 -a オプションは、特定の引数を二重引用符で囲んで示します。この場合、インストールされているすべてのパッケージを更新します(*を使用) ワイルドカード)を最新の状態にします。

ファイルをクライアントにコピー

Ansibleを使用して、クライアントサーバーのグループにファイルを配布できます。

ansible orlando -m copy -a "src=/home/scripts/foo.sh dest=/opt/scripts/foo.sh"

このコマンドは、copyを呼び出します モジュールであり、srcを示します (ソース)およびdest (宛先)引数の引用符で囲みます。ソースの場所は、デフォルトでこのAnsibleコマンドが実行されているデバイスになり、絶対または相対にすることができます。宛先の場所はリモートクライアントデバイス上の場所であり、常に絶対的な場所である必要があります。

copyを使用することもできます コピーするファイルの属性をさらに絞り込むためのモジュール。

ansible orlando -m copy -a "src=/home/scripts/foo.sh dest=/opt/scripts/foo.sh owner=foo group=bar mode=0755"

このコマンドは、orlando内の各クライアントのファイルの所有者、グループ、およびファイルのアクセス許可をさらに変更します グループ。

シェルコマンドの実行

shellを使用して、各クライアントでスクリプトを実行することもできます。 モジュール。

ansible orlando -m shell -a '/opt/scripts/foo.sh >> /home/foo/bar.txt' 

このコマンドは、foo.shを実行します スクリプトを作成し、その出力を/home/foo/bar.txtにリダイレクトします ファイル。ここで一重引用符に注意してください。 >>を渡すには、二重引用符ではなく一重引用符が必要です。 リモートシェルへのオペレーター。

Ansible Amuse-Bouche

使用できるコマンドやモジュールは他にもたくさんありますが、このサンプリングは、少数のサーバーでも管理する場合にAnsibleがどれほど役立つかを示す良い入門書になるはずです。サーバーインフラストラクチャ全体で繰り返しタスクを実行しなければならないといううらやましい立場にいる場合は、これらの例が、Ansibleがよりスマートに(そしてより効率的に)作業するのにどのように役立つかを理解してくれることを願っています。

サーバー管理やAnsibleでできるその他のことに関するその他の記事については、今後も必ず確認してください。 Atlantic.Netは、小規模な新興企業向けの柔軟なVPSホスティングソリューションの幅広いコレクションを、定評のある企業に提供しています。


Linux
  1. Zshの使用を開始する

  2. lsの使用を開始する

  3. じゅじゅを始めるには?

  1. GnuCashの使用を開始する

  2. LinuxでPostgreSQLを使い始める

  3. LinuxでSSHを使い始める

  1. Etcher.ioを使い始める

  2. 正規表現を使い始める

  3. Tmuxを使い始める