私は九爺があなたを連れてansibleを知っているわけではありません.
5267 ワード
Ansible
1.ansibleとは何かを知る ansible ? title “Ansible is Simple IT Automation”—— IT 。 : APP; ; ; (AWS) 。
これらの目標は本質的に1台または数台のサーバで一連のコマンドを実行するだけです.私が前に紹介したFabricのように、Fabricに基づいて開発された自動化アプリケーションの導入ツール:Essayです.リモート・サーバ上でコマンドを一括して実行するということです.
ではfabricとansibleの違いは何ですか?簡単に言えばfabricはツールボックスのようで、Remoteでコマンドを実行するために多くの使いやすいツールを提供していますが、Ansibleは簡単なプロセスを提供しています.そのプロセスに従ってやれば、簡単にタスクを完了することができます.これはライブラリとフレームワークの関係のようです.
もちろん、paramikoに基づいて開発された共通点もあります.このparamikoって何ですか?純粋なPythonで実装されたsshプロトコルライブラリです.したがってfabricとansibleには、sshに基づいてリモートホストと通信するため、client/agentsをリモートホストにインストールする必要がないという共通点があります.
2.クイックインストール
これは何なのか簡単に紹介しましたが、どうやって取り付けますか?簡単です.ansibleはpythonが開発したので、このようにインストールできます.
sudo esay_install ansible
#または
sudo pip install ansible
githubからcloneの最新バージョンをインストールすることもできます.
なお、制御サーバ(Master)はPython 2をインストールする必要がある.6/7、windowsではansibleは使用できません.管理するサーバ(Managed Node)はPython 2をインストールする必要がある.4以上のバージョンで2.5未満の場合はpython-simplejsonをインストールする必要があります.
3.構成
インストールが完了すると、まず構成項目を構成する--ansible.cfg.ansibleが実行されると、以下の順序で構成項目が検索されます.
* ANSIBLE_CONFIG(環境変数)
* ansible.cfg(現在のディレクトリの下)
* .ansible.cfg(ユーザホームディレクトリ下)
*/etc/ansible/ansible.cfg
もう1つの重要な構成はhostsの構成であり、すべてのリモートホストはhostsで構成する必要があり、グループ化することができます.もちろんhostsは指定でも実行できます.まず簡単な例を挙げて、ホームディレクトリの下にhostsファイルを新規作成します.
# hosts
[local]
127.0.0.1
次に、端末で以下を実行します.
$ ansible -i ~/hosts all -a 'who'
#結果は次のとおりです.
127.0.0.1 | success | rc=0 >>
Guest console Feb 1 16:29
the5fire console Jan 20 19:50
the5fire ttys018 Feb 22 15:35 (localhost)
これはad-hocコマンドです.一時実行コマンドです.ad-hocはansibleの概念です.上のコマンドでは-aです.具体的には後で話します.コマンドのallは値hossのすべてのサーバであり、もちろんansible-i~/hosts local-a'who'のようにグループ名に基づいてサーバを指定することもできます.
それに...cfgの構成は、デフォルトのansible実行時にその構成からhosts構成がロードされるため、変更することができる.ansible.cfgは、デフォルトのhostsファイルアドレスを指定します.
# .ansible.cfg
[defaults]
hostfile=/Users/the5fire/hosts
これで次回実行すると、-iパラメータは必要ありません.
4. Ad-Hoc
ad hoc-一時的に、ansibleでは迅速に実行する必要があり、保存する必要がないコマンドを指します.はっきり言って、簡単な命令--一つの命令を実行します.複雑なコマンドに対してはプレイブックと言います.
では、このAd-Hocコマンドはどう使いますか?上はもう簡単に模範を示した.ansibleにはもう一つのModule(モジュール)の概念があります.このモジュールはライブラリとして理解できます.すべてのコマンドはモジュールによって実行する必要があります.例えば、上のコマンド:ansible-i~/hosts all-a'who'です.実はデフォルトのcommandモジュール:ansible-i~/hosts all-mcommand-a'who'が呼び出されています.commandモジュール以外にも多くのモジュールがあります.例えば、このサーバにpingモジュール:ansible-i~/hosts all-m pingがまだ存在するかどうかを考えてみましょう.
いくつかのパラメータを記録する必要があります.
-u username#ssh接続のユーザー名を指定
-f 10#コンカレント数の指定
--sudo[-K]#root権限の実行が必要な場合は、-Kパラメータはrootパスワードを入力するために使用されます.
さまざまなモジュールを使用して、パッケージのインストールを一括して完了したり、必要な操作をしたりすることができます.その他のモジュールは公式サイトのドキュメントを見ることができます:modules
Ad-Hocの詳細についてはこちら:intro_adhoc
5.シンプルPlaybook
上のad hocとは、一時的に保存する必要のないコマンドを実行することですが、複雑なコマンドはどのように実行されますか?そのため、playbookというコマンドがあります.ansible-playbookです.
Playbook(シナリオ)は、その名の通り、スクリプトやプロファイルを定義し、何をするかを定義する必要があります.簡単なplaybookは、現在のユーザー名をwhoamiに出力します.rstファイル:
# playbook.yml
---
-hosts:local#hostsで指定
remote_user:the 5 fire#現在のユーザーと同じ場合は指定する必要はありません
tasks:
- name: whoami
shell: 'whoami > whoami.rst'
このコマンドを実行すると、localが表すサーバのユーザーディレクトリの下にこのようなファイルを見つけることができます.ここと言って、ちょっと止めます.このプロファイルはyaml形式なので、YAML:wiki YAMLを理解する必要があります.
上のplaybookを簡単に説明すると、hostsの後にlocalによってhostsから読み込まれ、tasksはキーワードで、どのようなタスクを実行するかを示しています.次のnameはタスクの名前で、shellは前述のmodule(モジュール)で、単一引用符ではコマンドです.
tasksに加えて、handlersのコマンドがあります.handlersは、tasksを実行した後にサーバが変化した後に呼び出すことができるhandlerで、次のように使用されます.
# playbook.yml
---
-hosts:local#hostsで指定
remote_user:the 5 fire#現在のユーザーと同じ場合は指定する必要はありません
tasks:
- name: whoami
copy: src=~/hosts dest=~/hosts.dest#リモートへのローカルコピー
notify:#copy実行後~/hosts.destファイルが変更を送信すると、実行
-clear copy#呼び出しhandler
handlers:
- name: clear copy
shell: 'mv ~/hosts.dest hosts.del'#削除のふり
上はただのプレゼンテーションで、localサーバでgitから私のblogソースコードをcloneし、仮想環境を作成し、データベースを作成し、最後に実行します.
# deploy-blog-simple.yml
---
-hosts:local#hostsで指定
remote_user:the 5 fire#現在のユーザーと同じ場合は指定する必要はありません
tasks:
- name: check out django_blog
git: dest=~/demos/django_selfblog repo=https://github.com/the5fire/django_selfblog
update=yes
- name: make virtualenv
shell: 'virtualenv ~/demos'
- name: install requirements
pip: requirements=~/demos/django_selfblog/requirements.txt
virtualenv=~/demos
- name: init database
shell: . ./bin/activate && cd django_selfblog/selfblog && ./init_database.sh chdir=~/demos
- name: run manage.py
shell: . ./bin/activate && cd django_selfblog/selfblog && ./run.sh chdir=~/demos
sshアカウントのパスワードなしログインを構成したら、直接実行します:ansible-playbookdeploy-blog-simple.ymlは指定したサーバに配備し、blogを起動することができます.
ansible ? title “Ansible is Simple IT Automation”—— IT 。 : APP; ; ; (AWS) 。
これらの目標は本質的に1台または数台のサーバで一連のコマンドを実行するだけです.私が前に紹介したFabricのように、Fabricに基づいて開発された自動化アプリケーションの導入ツール:Essayです.リモート・サーバ上でコマンドを一括して実行するということです.
ではfabricとansibleの違いは何ですか?簡単に言えばfabricはツールボックスのようで、Remoteでコマンドを実行するために多くの使いやすいツールを提供していますが、Ansibleは簡単なプロセスを提供しています.そのプロセスに従ってやれば、簡単にタスクを完了することができます.これはライブラリとフレームワークの関係のようです.
もちろん、paramikoに基づいて開発された共通点もあります.このparamikoって何ですか?純粋なPythonで実装されたsshプロトコルライブラリです.したがってfabricとansibleには、sshに基づいてリモートホストと通信するため、client/agentsをリモートホストにインストールする必要がないという共通点があります.
2.クイックインストール
これは何なのか簡単に紹介しましたが、どうやって取り付けますか?簡単です.ansibleはpythonが開発したので、このようにインストールできます.
sudo esay_install ansible
#または
sudo pip install ansible
githubからcloneの最新バージョンをインストールすることもできます.
なお、制御サーバ(Master)はPython 2をインストールする必要がある.6/7、windowsではansibleは使用できません.管理するサーバ(Managed Node)はPython 2をインストールする必要がある.4以上のバージョンで2.5未満の場合はpython-simplejsonをインストールする必要があります.
3.構成
インストールが完了すると、まず構成項目を構成する--ansible.cfg.ansibleが実行されると、以下の順序で構成項目が検索されます.
* ANSIBLE_CONFIG(環境変数)
* ansible.cfg(現在のディレクトリの下)
* .ansible.cfg(ユーザホームディレクトリ下)
*/etc/ansible/ansible.cfg
もう1つの重要な構成はhostsの構成であり、すべてのリモートホストはhostsで構成する必要があり、グループ化することができます.もちろんhostsは指定でも実行できます.まず簡単な例を挙げて、ホームディレクトリの下にhostsファイルを新規作成します.
# hosts
[local]
127.0.0.1
次に、端末で以下を実行します.
$ ansible -i ~/hosts all -a 'who'
#結果は次のとおりです.
127.0.0.1 | success | rc=0 >>
Guest console Feb 1 16:29
the5fire console Jan 20 19:50
the5fire ttys018 Feb 22 15:35 (localhost)
これはad-hocコマンドです.一時実行コマンドです.ad-hocはansibleの概念です.上のコマンドでは-aです.具体的には後で話します.コマンドのallは値hossのすべてのサーバであり、もちろんansible-i~/hosts local-a'who'のようにグループ名に基づいてサーバを指定することもできます.
それに...cfgの構成は、デフォルトのansible実行時にその構成からhosts構成がロードされるため、変更することができる.ansible.cfgは、デフォルトのhostsファイルアドレスを指定します.
# .ansible.cfg
[defaults]
hostfile=/Users/the5fire/hosts
これで次回実行すると、-iパラメータは必要ありません.
4. Ad-Hoc
ad hoc-一時的に、ansibleでは迅速に実行する必要があり、保存する必要がないコマンドを指します.はっきり言って、簡単な命令--一つの命令を実行します.複雑なコマンドに対してはプレイブックと言います.
では、このAd-Hocコマンドはどう使いますか?上はもう簡単に模範を示した.ansibleにはもう一つのModule(モジュール)の概念があります.このモジュールはライブラリとして理解できます.すべてのコマンドはモジュールによって実行する必要があります.例えば、上のコマンド:ansible-i~/hosts all-a'who'です.実はデフォルトのcommandモジュール:ansible-i~/hosts all-mcommand-a'who'が呼び出されています.commandモジュール以外にも多くのモジュールがあります.例えば、このサーバにpingモジュール:ansible-i~/hosts all-m pingがまだ存在するかどうかを考えてみましょう.
いくつかのパラメータを記録する必要があります.
-u username#ssh接続のユーザー名を指定
-f 10#コンカレント数の指定
--sudo[-K]#root権限の実行が必要な場合は、-Kパラメータはrootパスワードを入力するために使用されます.
さまざまなモジュールを使用して、パッケージのインストールを一括して完了したり、必要な操作をしたりすることができます.その他のモジュールは公式サイトのドキュメントを見ることができます:modules
Ad-Hocの詳細についてはこちら:intro_adhoc
5.シンプルPlaybook
上のad hocとは、一時的に保存する必要のないコマンドを実行することですが、複雑なコマンドはどのように実行されますか?そのため、playbookというコマンドがあります.ansible-playbookです.
Playbook(シナリオ)は、その名の通り、スクリプトやプロファイルを定義し、何をするかを定義する必要があります.簡単なplaybookは、現在のユーザー名をwhoamiに出力します.rstファイル:
# playbook.yml
---
-hosts:local#hostsで指定
remote_user:the 5 fire#現在のユーザーと同じ場合は指定する必要はありません
tasks:
- name: whoami
shell: 'whoami > whoami.rst'
このコマンドを実行すると、localが表すサーバのユーザーディレクトリの下にこのようなファイルを見つけることができます.ここと言って、ちょっと止めます.このプロファイルはyaml形式なので、YAML:wiki YAMLを理解する必要があります.
上のplaybookを簡単に説明すると、hostsの後にlocalによってhostsから読み込まれ、tasksはキーワードで、どのようなタスクを実行するかを示しています.次のnameはタスクの名前で、shellは前述のmodule(モジュール)で、単一引用符ではコマンドです.
tasksに加えて、handlersのコマンドがあります.handlersは、tasksを実行した後にサーバが変化した後に呼び出すことができるhandlerで、次のように使用されます.
# playbook.yml
---
-hosts:local#hostsで指定
remote_user:the 5 fire#現在のユーザーと同じ場合は指定する必要はありません
tasks:
- name: whoami
copy: src=~/hosts dest=~/hosts.dest#リモートへのローカルコピー
notify:#copy実行後~/hosts.destファイルが変更を送信すると、実行
-clear copy#呼び出しhandler
handlers:
- name: clear copy
shell: 'mv ~/hosts.dest hosts.del'#削除のふり
上はただのプレゼンテーションで、localサーバでgitから私のblogソースコードをcloneし、仮想環境を作成し、データベースを作成し、最後に実行します.
# deploy-blog-simple.yml
---
-hosts:local#hostsで指定
remote_user:the 5 fire#現在のユーザーと同じ場合は指定する必要はありません
tasks:
- name: check out django_blog
git: dest=~/demos/django_selfblog repo=https://github.com/the5fire/django_selfblog
update=yes
- name: make virtualenv
shell: 'virtualenv ~/demos'
- name: install requirements
pip: requirements=~/demos/django_selfblog/requirements.txt
virtualenv=~/demos
- name: init database
shell: . ./bin/activate && cd django_selfblog/selfblog && ./init_database.sh chdir=~/demos
- name: run manage.py
shell: . ./bin/activate && cd django_selfblog/selfblog && ./run.sh chdir=~/demos
sshアカウントのパスワードなしログインを構成したら、直接実行します:ansible-playbookdeploy-blog-simple.ymlは指定したサーバに配備し、blogを起動することができます.
インストールが完了すると、まず構成項目を構成する--ansible.cfg.ansibleが実行されると、以下の順序で構成項目が検索されます.
* ANSIBLE_CONFIG(環境変数)
* ansible.cfg(現在のディレクトリの下)
* .ansible.cfg(ユーザホームディレクトリ下)
*/etc/ansible/ansible.cfg
もう1つの重要な構成はhostsの構成であり、すべてのリモートホストはhostsで構成する必要があり、グループ化することができます.もちろんhostsは指定でも実行できます.まず簡単な例を挙げて、ホームディレクトリの下にhostsファイルを新規作成します.
# hosts
[local]
127.0.0.1
次に、端末で以下を実行します.
$ ansible -i ~/hosts all -a 'who'
#結果は次のとおりです.
127.0.0.1 | success | rc=0 >>
Guest console Feb 1 16:29
the5fire console Jan 20 19:50
the5fire ttys018 Feb 22 15:35 (localhost)
これはad-hocコマンドです.一時実行コマンドです.ad-hocはansibleの概念です.上のコマンドでは-aです.具体的には後で話します.コマンドのallは値hossのすべてのサーバであり、もちろんansible-i~/hosts local-a'who'のようにグループ名に基づいてサーバを指定することもできます.
それに...cfgの構成は、デフォルトのansible実行時にその構成からhosts構成がロードされるため、変更することができる.ansible.cfgは、デフォルトのhostsファイルアドレスを指定します.
# .ansible.cfg
[defaults]
hostfile=/Users/the5fire/hosts
これで次回実行すると、-iパラメータは必要ありません.
4. Ad-Hoc
ad hoc-一時的に、ansibleでは迅速に実行する必要があり、保存する必要がないコマンドを指します.はっきり言って、簡単な命令--一つの命令を実行します.複雑なコマンドに対してはプレイブックと言います.
では、このAd-Hocコマンドはどう使いますか?上はもう簡単に模範を示した.ansibleにはもう一つのModule(モジュール)の概念があります.このモジュールはライブラリとして理解できます.すべてのコマンドはモジュールによって実行する必要があります.例えば、上のコマンド:ansible-i~/hosts all-a'who'です.実はデフォルトのcommandモジュール:ansible-i~/hosts all-mcommand-a'who'が呼び出されています.commandモジュール以外にも多くのモジュールがあります.例えば、このサーバにpingモジュール:ansible-i~/hosts all-m pingがまだ存在するかどうかを考えてみましょう.
いくつかのパラメータを記録する必要があります.
-u username#ssh接続のユーザー名を指定
-f 10#コンカレント数の指定
--sudo[-K]#root権限の実行が必要な場合は、-Kパラメータはrootパスワードを入力するために使用されます.
さまざまなモジュールを使用して、パッケージのインストールを一括して完了したり、必要な操作をしたりすることができます.その他のモジュールは公式サイトのドキュメントを見ることができます:modules
Ad-Hocの詳細についてはこちら:intro_adhoc
5.シンプルPlaybook
上のad hocとは、一時的に保存する必要のないコマンドを実行することですが、複雑なコマンドはどのように実行されますか?そのため、playbookというコマンドがあります.ansible-playbookです.
Playbook(シナリオ)は、その名の通り、スクリプトやプロファイルを定義し、何をするかを定義する必要があります.簡単なplaybookは、現在のユーザー名をwhoamiに出力します.rstファイル:
# playbook.yml
---
-hosts:local#hostsで指定
remote_user:the 5 fire#現在のユーザーと同じ場合は指定する必要はありません
tasks:
- name: whoami
shell: 'whoami > whoami.rst'
このコマンドを実行すると、localが表すサーバのユーザーディレクトリの下にこのようなファイルを見つけることができます.ここと言って、ちょっと止めます.このプロファイルはyaml形式なので、YAML:wiki YAMLを理解する必要があります.
上のplaybookを簡単に説明すると、hostsの後にlocalによってhostsから読み込まれ、tasksはキーワードで、どのようなタスクを実行するかを示しています.次のnameはタスクの名前で、shellは前述のmodule(モジュール)で、単一引用符ではコマンドです.
tasksに加えて、handlersのコマンドがあります.handlersは、tasksを実行した後にサーバが変化した後に呼び出すことができるhandlerで、次のように使用されます.
# playbook.yml
---
-hosts:local#hostsで指定
remote_user:the 5 fire#現在のユーザーと同じ場合は指定する必要はありません
tasks:
- name: whoami
copy: src=~/hosts dest=~/hosts.dest#リモートへのローカルコピー
notify:#copy実行後~/hosts.destファイルが変更を送信すると、実行
-clear copy#呼び出しhandler
handlers:
- name: clear copy
shell: 'mv ~/hosts.dest hosts.del'#削除のふり
上はただのプレゼンテーションで、localサーバでgitから私のblogソースコードをcloneし、仮想環境を作成し、データベースを作成し、最後に実行します.
# deploy-blog-simple.yml
---
-hosts:local#hostsで指定
remote_user:the 5 fire#現在のユーザーと同じ場合は指定する必要はありません
tasks:
- name: check out django_blog
git: dest=~/demos/django_selfblog repo=https://github.com/the5fire/django_selfblog
update=yes
- name: make virtualenv
shell: 'virtualenv ~/demos'
- name: install requirements
pip: requirements=~/demos/django_selfblog/requirements.txt
virtualenv=~/demos
- name: init database
shell: . ./bin/activate && cd django_selfblog/selfblog && ./init_database.sh chdir=~/demos
- name: run manage.py
shell: . ./bin/activate && cd django_selfblog/selfblog && ./run.sh chdir=~/demos
sshアカウントのパスワードなしログインを構成したら、直接実行します:ansible-playbookdeploy-blog-simple.ymlは指定したサーバに配備し、blogを起動することができます.
上のad hocとは、一時的に保存する必要のないコマンドを実行することですが、複雑なコマンドはどのように実行されますか?そのため、playbookというコマンドがあります.ansible-playbookです.
Playbook(シナリオ)は、その名の通り、スクリプトやプロファイルを定義し、何をするかを定義する必要があります.簡単なplaybookは、現在のユーザー名をwhoamiに出力します.rstファイル:
# playbook.yml
---
-hosts:local#hostsで指定
remote_user:the 5 fire#現在のユーザーと同じ場合は指定する必要はありません
tasks:
- name: whoami
shell: 'whoami > whoami.rst'
このコマンドを実行すると、localが表すサーバのユーザーディレクトリの下にこのようなファイルを見つけることができます.ここと言って、ちょっと止めます.このプロファイルはyaml形式なので、YAML:wiki YAMLを理解する必要があります.
上のplaybookを簡単に説明すると、hostsの後にlocalによってhostsから読み込まれ、tasksはキーワードで、どのようなタスクを実行するかを示しています.次のnameはタスクの名前で、shellは前述のmodule(モジュール)で、単一引用符ではコマンドです.
tasksに加えて、handlersのコマンドがあります.handlersは、tasksを実行した後にサーバが変化した後に呼び出すことができるhandlerで、次のように使用されます.
# playbook.yml
---
-hosts:local#hostsで指定
remote_user:the 5 fire#現在のユーザーと同じ場合は指定する必要はありません
tasks:
- name: whoami
copy: src=~/hosts dest=~/hosts.dest#リモートへのローカルコピー
notify:#copy実行後~/hosts.destファイルが変更を送信すると、実行
-clear copy#呼び出しhandler
handlers:
- name: clear copy
shell: 'mv ~/hosts.dest hosts.del'#削除のふり
上はただのプレゼンテーションで、localサーバでgitから私のblogソースコードをcloneし、仮想環境を作成し、データベースを作成し、最後に実行します.
# deploy-blog-simple.yml
---
-hosts:local#hostsで指定
remote_user:the 5 fire#現在のユーザーと同じ場合は指定する必要はありません
tasks:
- name: check out django_blog
git: dest=~/demos/django_selfblog repo=https://github.com/the5fire/django_selfblog
update=yes
- name: make virtualenv
shell: 'virtualenv ~/demos'
- name: install requirements
pip: requirements=~/demos/django_selfblog/requirements.txt
virtualenv=~/demos
- name: init database
shell: . ./bin/activate && cd django_selfblog/selfblog && ./init_database.sh chdir=~/demos
- name: run manage.py
shell: . ./bin/activate && cd django_selfblog/selfblog && ./run.sh chdir=~/demos
sshアカウントのパスワードなしログインを構成したら、直接実行します:ansible-playbookdeploy-blog-simple.ymlは指定したサーバに配備し、blogを起動することができます.