Ansible:構成管理とIT自動化ツール

3692 ワード

今日はansibleについてお話しします.Pythonが作成した強力な構成管理ソリューションです.選択可能な構成管理ソリューションは市販されていますが、ansibleの特徴は簡潔さにあります.主流の構成管理システムでansibleを差別化する点は、構成したい各ノードに独自のコンポーネントをインストールする必要がないことです.同時に提供される利点の1つは、必要に応じて、インフラストラクチャ全体を1つ以上の場所で制御できることです.最後の点はその正確性であり、ここでは議論があるかもしれませんが、多くの場合、これは依然としてその長所とすることができると思います.十分ですが、RHEL/centOSとDebian/UbuntuベースのシステムでAnsibleのインストールと構成に着手しましょう.
準備作業
リリース:RHEL/CentOS/Debian/Ubuntu Linux Jinja 2:Pythonのデザイナーに優しい現代テンプレート言語PyYAML:PythonのYAML符号化/逆符号化関数ライブラリparamiko:純Pythonで作成されたSSHv 2プロトコル関数ライブラリ(訳者注:原文は関数ライブラリ名にスペルエラーがある)httplib 2:機能が全面的なHTTPクライアント関数ライブラリ本明細書に記載されているほとんどの操作は、bashまたは他の現代的なshellでrootユーザーで実行すると仮定しています.
Ansibleの動作方法
Ansibleツールでは、デーモンプロセスは使用されず、追加のカスタムセキュリティアーキテクチャも必要ありません.そのため、導入は容易と言えます.必要なものはすべてSSHクライアントとサーバです.
 +-----------------+                    +---------------+
 |    Ansible  |       SSH          |      1   |
 |Linux/Unix    ||       2 |       
 +-----------------+                  |      3   |      
    192.168.1.100                       +---------------+ Unix/Linux    

次のようになります.
192.168.1.1.1100-ローカルのワークステーションまたはサーバにAnsibleをインストールします.
ファイルサーバ1からプロキシサーバ3-192.168.1.1.1100とAnsibleを使用して、すべてのサーバを自動的に管理します.
SSH-192.168.1.1.1100とローカル/リモートのサーバ間でSSHキーを設定します.
Ansibleインストールチュートリアル
ansibleのインストールは簡単で、多くのリリース版のサードパーティのソフトウェアウェアハウスには既製のパッケージがあり、直接インストールすることができます.他の簡単なインストール方法には、pipを使用してインストールするか、githubから最新のバージョンを取得することが含まれます.あなたのパッケージマネージャを使用してインストールするには、RHEL/centOS LinuxベースのシステムでEPEL倉庫が必要になる可能性があります.
RHEL/centOS Linuxベースのシステムにansibleをインストールする
次のyumコマンドを入力します.
$ sudo yum install ansible

Debian/Ubuntu Linuxベースのシステムにansibleをインストールする
次のapt-getコマンドを入力します.
$ sudo apt-get install software-properties-common
$ sudo apt-add-repository ppa:ansible/ansible
$ sudo apt-get update
$ sudo apt-get install ansible

pipを使用してansibleをインストールする
pipコマンドは、Python Package Indexのパッケージを管理できるなど、Pythonパッケージをインストールおよび管理するツールです.LinuxおよびクラスUnixシステムでは、次のように使用されます.
$ sudo pip install ansible

ソースコードから最新バージョンのansibleをインストール
次のコマンドでgithubから最新バージョンをインストールできます.
$ cd ~
$ git clone git://github.com/ansible/ansible.git
$ cd ./ansible
$ source ./hacking/env-setup

git checkoutからansibleを実行するときは、使用するたびに環境を設定する必要があることを覚えておいてください.または、この設定プロセスをbash rcファイルに追加することができます.
#    BASH RC
$ echo "export ANSIBLE_HOSTS=~/ansible_hosts" >> ~/.bashrc
$ echo "source ~/ansible/hacking/env-setup" >> ~/.bashrc

ansibleのhostsファイルには、操作可能なホストが含まれています.デフォルトではansibleはパス/etc/ansible/hostsを介してhostsファイルを検索しますが、この動作は変更できます.これにより、1つ以上のansibleを操作したり、異なるデータセンターの異なる顧客に対して操作したりしたい場合にも便利です.コマンドラインパラメータ-iでhostsファイルを指定できます.
$ ansible all -m shell -a "hostname" --ask-pass -i /etc/some/other/dir/ansible_hosts

しかし、私は環境変数を使用する傾向があります.これは、sourceの異なるファイルを通じて作業目標を切り替えたいときに役立ちます.ここでの環境変数は$ANSIBLE_HOSTSは、次のように設定できます.
$ export ANSIBLE_HOSTS=~/ansible_hosts

必要なコンポーネントがすべてインストールされ、hostsファイルも用意されている場合は、試してみてください.迅速なテストのために、ここでは127.0.0.1をansibleのhostsファイルに書きました.
$ echo "127.0.0.1" > ~/ansible_hosts

簡単なpingをテストします.
$ ansible all -m ping

またはsshパスワードをプロンプトします.
$ ansible all -m ping --ask-pass

最初の設定で何度か問題があったので、ここではansibleにSSH公開鍵認証を設定することを強くお勧めします.しかし、さっきのテストではask-passを使用していました.一部のマシンにはsshpassをインストールするか、このように-c paramikoを指定する必要があります.
$ ansible all -m ping --ask-pass -c paramiko

もちろんsshpassをインストールすることもできますが、sshpassは常に標準的な倉庫で提供されていないので、paramikoはもっと簡単かもしれません.