はじめに
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ホスティングソリューションの幅広いコレクションを、定評のある企業に提供しています。
。
。