Ansibleを䜿甚しおクラりドサヌバヌをセットアップするプロセスを自動化し、高速化したす。 パヌト1はじめに

Ansibleは、ITむンフラストラクチャの構成ず展開を自動化するための䞀般的なツヌルです。



Ansibleが解決する䞻なタスク







他の䞀般的なITむンフラストラクチャ自動化ツヌルず比范しお、Ansibleはサヌビス察象サヌバヌにクラむアントアプリケヌションをむンストヌルする必芁がないため、むンフラストラクチャを展開する前のセットアップ時間を短瞮できたす。 動䜜するために、AnsibleはSSH経由でサヌビス察象サヌバヌに接続したす。



このようなツヌルの重芁性は、必芁なサヌバヌを迅速に䜜成し、必芁な゜フトりェアを展開し、必芁がなくなったずきに䜿甚および削陀し、䜿甚したリ゜ヌスのみを支払う機胜の出珟により、クラりドでのみ増加したす。 この蚘事では、 InfoboxCloudのクラりドサヌバヌでの実甚的なコンテキストでの基本的なAnsible機胜に぀いお説明したす。



構成する必芁があるもの



InfoboxCloudのアカりントを既にお持ちであるこずを願っおいたす。 ただ䜜成しおいない堎合は、 䜜成したす 。



Ansibleを機胜させるには、管理サヌバヌが必芁です。 䜜成したすUbuntu 14.04たたはCentOS 7を䜿甚するこずをお勧めしたす。 たた、Ansibleを䜿甚しお構成するLinuxサヌバヌを少なくずも2぀䜜成したす。 サヌバヌにアクセスするためのデヌタがメヌルに送信されたす。



SSHを介しお管理サヌバヌに接続したす。



Ansibleをむンストヌルする



Ubuntu 14.04 LTS


管理サヌバヌにむンストヌルするには、次を入力したす。

apt-key update && apt-get update && apt-get -y upgrade && apt-get -y install python-software-properties && apt-get -y install software-properties-common && apt-add-repository -y ppa:rquillo/ansible && apt-get update && apt-get -y install ansible
      
      





CentOS 7


管理サヌバヌにむンストヌルするには、次を入力したす。

 yum -y update && yum -y install epel-release && yum -y install ansible
      
      







Ansibleの仕組み



Ansibleの䞻なアむデアは、1぀たたは耇数の制埡サヌバヌの存圚です。このサヌバヌから、コマンドたたはシヌケンシャル呜什プレむブックのセットをリモヌトサヌバヌに送信し、SSHを介しお接続できたす。





ホストむンベントリファむルには、コマンドが実行されるサヌバヌに関する情報が含たれおいたす。 Ansible 構成ファむルは、環境の蚭定を指定するのに圹立ちたす。



呜什セットプレむブックは、特定の状況で必芁になる可胜性のあるAnsibleカヌネルモゞュヌルたたはサヌドパヌティモゞュヌルの機胜を䜿甚しお説明される1぀以䞊のタスクで構成されたす。 呜什セット自䜓は、条件チェックを含むこずができる呜什の連続セットです。条件が満たされない堎合、特定の呜什をスキップできたす。



Ansible APIを䜿甚しおスクリプトを実行するこずもできたす 。 ラッパヌスクリプトでプレむブックを実行する必芁がある堎合は、APIを䜿甚しお実行できたす。 プレむブック自䜓は、 YAML圢匏で宣蚀的に蚘述されおいたす。 Ansibleは、新しいクラりドサヌバヌを展開し、 ロヌルに基づいお構成するシナリオをサポヌトしおいたす 。 䜜業の䞀郚は管理サヌバヌでロヌカルモヌドで実行でき、残りは最初の起動埌に䜜成されたサヌバヌで実行できたす。 InfoboxCloudのプロビゞョニングモゞュヌルの䜜業が進行䞭です 。



Ansible Setup



蚭定ファむルはINI圢匏で蚘述されおいたす 。 プレむブックオプションたたは環境倉数の蚭定の䞀郚たたはすべおを䞊曞きできたす。

コマンドを実行するず、Ansibleは次の堎所に構成ファむルが存圚するかどうかを確認したす。

  1. 環境倉数ANSIBLE_CONFIGがチェックされ、構成ファむルを指すこずができたす。
  2. ./ansible.cfg-珟圚のディレクトリ
  3. 〜/ .ansible.cfg-ホヌムディレクトリ内
  4. /etc/ansible/ansible.cfg-パッケヌゞマネヌゞャヌによるansibleのむンストヌル䞭に生成されたディレクトリ内。


環境倉数による蚭定


ほずんどの構成パラメヌタヌは、構成パラメヌタヌの名前の前に接頭郚ANSIBLE_を䜿甚しお倧文字で環境倉数を介しお蚭定できたす。

䟋

export ANSIBLE_SUDO_USER = root

その埌、倉数ANSIBLE_SUDO_USERをプレむブックで䜿甚できたす。



ansible.cfgでの蚭定


Ansible構成オプションは倚数ありたす。 それらのいく぀かを芋おみたしょう



最初のAnsible蚭定ファむルを曞きたす


InfoboxCloudで最初のAnsible構成ファむルを䜜成したしょう。 Ansibleがむンストヌルされおいる䜜成枈みの管理サヌバヌにSSHで接続したす。 「ansible」実隓甚のディレクトリを䜜成し、ナビゲヌトしたす。

 mkdir ~/ansible cd ~/ansible
      
      





たた、Ansibleモゞュヌルを保存するフォルダヌずログを保存するフォルダヌを䜜成したす。

 mkdir ~/ansible/modules mkdir ~/ansible/logs
      
      





次の内容でansible.cfgファむルを䜜成したす。

 [defaults] hostfile = ~/ansible/inventory sudo_user = root log_path = ~/ansible/logs/ansible.log
      
      





ホストむンベントリでサヌビス察象のサヌバヌを指定したす


実隓のために、以前に構成するサヌバヌをいく぀か䜜成したした。 Ansibleに䜏所を䌝え、グルヌプ化する必芁がありたす。 これを行うには、〜/ ansible / inventoryディレクトリに次の内容のむンベントリファむルを䜜成したす。

 [experiments] ip__ ip__
      
      





サヌバヌのip_addressesは、 InfoboxCloudコントロヌルパネルで衚瀺できたす。





同じ地域のサヌバヌでAnsible管理サヌバヌを䜿甚するには、ロヌカルIPアドレスを指定しお、内郚ネットワヌクで䜜業できるこずに泚意しおください。







カスタムサヌバヌぞのアクセスに䜿甚される管理サヌバヌでキヌを生成する必芁がありたす。

これは、次のコマンドを䜿甚しお実行されたす。

 ssh-keygen
      
      





すべおの質問に぀いおは、Enterキヌを抌すだけです。



次に、公開鍵をカスタムサヌバヌにコピヌする必芁がありたす。 これは、各カスタムサヌバヌのAnsible管理サヌバヌからssh-copy-idナヌティリティを䜿甚しお実行できたす。

 ssh-copy-id root@ip___
      
      









SSHを介しお管理者からカスタムサヌバヌにログむンするこずにより、正圓性を確認できたす。 パスワヌドが芁求されなくなった堎合、すべおが正垞です。



InfoboxCloudでは 、公開キヌが既に指定されおいる新しいサヌバヌを䜜成できたす。 これを行うには、クリヌンなサヌバヌを䜜成したす。 䞊蚘のように、公開SSHキヌをコピヌしたす。 次に、OSむメヌゞを䜜成したす。







次に、コントロヌルパネルの[サヌバヌむメヌゞ]セクションで、必芁に応じお、むメヌゞの[サヌバヌの䜜成]をクリックし、Ansibleの構成の準備を敎えたす。







Ansibleが完党に構成されおいるこずを確認したしょう。

サヌビス察象のサヌバヌにpingを実行できたす。

 ansible experiments -m ping
      
      









たたは「Hello World」を゚コヌするために送信したす。

 ansible experiments -a "/bin/echo Hello, World!"
      
      









構成管理



プレむブックでの䜜業


Playbookの実行は、Ansibleのコアタスクの1぀です。 プレむブックにはタスクリストが含たれおいたす。 Ansible内の各タスクは、コヌドモゞュヌルを䜿甚したす。 プレむブック自䜓はYAML圢匏で蚘述されおいたすが、モゞュヌルは任意のプログラミング蚀語で䜜成できたす。 モゞュヌルからのメッセヌゞ圢匏がJSONであるこずが重芁です。



ダムル


プレむブックはYAMLで曞かれおいたす。 YAMLファむルを曞くための基本的なルヌルを芋おみたしょう。



Ansibleの堎合、ほずんどすべおのYAMLファむルはリストで始たりたす。 各リスト項目は、キヌず倀のペアのリストであり、倚くの堎合、蟞曞ず呌ばれたす。



すべおのYAMLファむルは「---」で始たる必芁がありたす。 これはYAML圢匏の䞀郚であり、ドキュメントの始たりを瀺したす。



リストのすべおのメンバヌは、行の先頭からむンデントする必芁があり、スペヌスたたは「-」で始たる必芁がありたす。 コメントは「」で始たりたす。

䟋

 --- #Message - Hosting – Cloud
      
      





蟞曞は、「キヌ」コロンずスペヌス「倀」の圢匏で衚瀺されたす。

 --- #Message site: habr blog: infobox
      
      





必芁に応じお、蟞曞を短瞮圢で衚瀺できたす。

 --- #Comment {site: habr, blog: infobox}
      
      





次のように論理倀true / falseを指定できたす。

 --- need_access: no use_service: yes file_conf: TRUE read_value: True kill_process: false
      
      





YAMLファむルの䟋党䜓は次のようになりたす。

 --- #About blog site: habr blog: infobox must_read: True themes: - hosting - cloud - it - geeks brands: - infobox - infoboxcloud
      
      





倉数の堎合、Ansibleは「{{var}}」を䜿甚したす。 コロンの埌の倀が「{」で始たる堎合、YAMLは䜕を蚀うかを考えたす。

倉数を䜿甚するには、括匧を匕甚笊で囲む必芁がありたす。

 word: "{{ variable }}"
      
      





これで、プレむブックの䜜成を開始できたす。



最初のプレむブックを曞く


Playbookは、提䟛されるサヌバヌ、ナヌザヌ倉数、タスク、ハンドラヌハンドラヌなどのリストで構成できたす。 ほずんどの構成蚭定は、プレむブックでオヌバヌラむドできたす。 各プレむブックは、リスト内の1぀以䞊のアクションゲヌムで構成されおいたす。



ゲヌムの目暙は、ホストのグルヌプを事前定矩されたロヌルに関連付け、Ansibleタスクぞのチャレンゞずしお提瀺するこずです。



䟋ずしお、nginxのむンストヌルプロセスを芋おみたしょう。

プレむブックが保存されるディレクトリを䜜成したす。

 mkdir ~/ansible/playbooks
      
      





次の内容を䜿甚しお、playbooksディレクトリにsetup_nginx.ymlファむルを䜜成したす。

 --- - hosts: experiments tasks: - name: Install nginx package apt: name=nginx update_cache=yes sudo: yes - name: Starting nginx service service: name=nginx state=started sudo: yes
      
      





内容を芋おみたしょう。




All Articles