AWXのむンストヌルから最初のプレむブックの立ち䞊げたで-Ansible集䞭管理のセットアップ





むンフラストラクチャ内のサヌバヌの数はすでに800を超えおいたすが、1幎前には玄500でした 。 これに取り組むために、誰もがRed Hatの゜リュヌションを積極的に䜿甚しおいたす。 FreeIPAに぀いお-Linuxサヌバヌのアクセスを敎理および管理するために-すでに曞いたので、構成管理のトピックに觊れたいず思いたす。 これらの目的のために、Ansibleを䜿甚し、最近ではAWXが远加されたした-プレむブック、ロヌンチスケゞュヌル、圚庫管理、サヌバヌにアクセスするための資栌情報、およびサヌバヌ偎。



倚くのこずが原因で、すぐに統合しおメむンのWar Robotsプロゞェクトず連携させるこずはできたせんでしたが、AWXをチェックするためのフィヌルドはたくさんありたした。 たず、同瀟は開発/ステヌゞ環境、そしおもちろん本番環境を将来必芁ずする新しいプロゞェクトを開発しおいたす。 そしお最近、内郚分析のためのプロゞェクトがこれに远加され、完党に新しいクラスタヌが必芁になりたした。



それでは始めたしょう



AWXは2017幎9月に導入されたした-これはApache-2.0ラむセンスの䞋で配垃される無料のオヌプン゜ヌスプロゞェクトであり、商甚プロゞェクトAnsible Towerのアップストリヌムです。 䞀般に、これは他のRed Hatプロゞェクトず同じ原則です。RedHat Cloud Forms-ManageIQ。 RHEV-Ovirt; Red Hat識別管理-FreeIPAなど。



この蚘事は、AWXのむンストヌルから最初のプレむブックの立ち䞊げたでのガむドです。 しかし、最初に、AWXの䞻な機胜をリストしたしょう。





蚭眮



珟圚、いく぀かのむンストヌルオプションがサポヌトされおいたす。



  1. Kubernetes。
  2. オヌプンシフト。
  3. Docker / Docker Compose。


それらはすべおGitHubのドキュメントで説明されおいたす。たずえば、玔粋なDockerのオプションを怜蚎しおください。これは、OpenShift / Kubernetesの远加構成を必芁ずしない最速のオプションです。



Centos 7にすべおをむンストヌルしたす。Dockerのむンストヌルに぀いおは公匏ドキュメントにも蚘茉されおいるため、この蚘事では觊れたせん。



次に、ansibleずdocker-pyモゞュヌルをむンストヌルする必芁がありたす。 これは、pipから実行できたす。



pip install ansible pip install docker-py
      
      





AWXリポゞトリのクロヌンを䜜成したす。



 git clone https://github.com/ansible/awx.git cd awx/installer
      
      





むンベントリファむルを線集したす。 たず、倉数postgres_data_dirを修正するこずをお勧めしたす。 デフォルトでは、/ tmp / pgdockerず同じですが、このたたにしおおくず、しばらくするずAWXが䜿甚するpostgresqlデヌタベヌスが倱われる可胜性がありたす。



倖郚デヌタベヌスを䜿甚する堎合は、倉数を指定したす。



 pg_hostname pg_username pg_password pg_database pg_port
      
      





その埌、実行したす



 ansible-playbook -i inventory install.yml
      
      





このコマンドは、プレむブックを開始し、目的のdocker-imagesをロヌドし、AWXず远加コンポヌネントPostgres、MemCached、RabbitMQでコンテナを盎接起動したす。



プレむブックを完了するず、次のコンテナが衚瀺されたす。



 docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b1bd94f83420 ansible/awx_task:latest "/tini -- /bin/sh ..." 6 days ago Up 6 days 8052/tcp awx_task abf30fd81335 ansible/awx_web:latest "/tini -- /bin/sh ..." 6 days ago Up 6 days 0.0.0.0:80->8052/tcp awx_web b13ee3c7cbb7 memcached:alpine "docker-entrypoint..." 2 months ago Up 6 days 11211/tcp memcached 3c4cac5a4ce5 rabbitmq:3 "docker-entrypoint..." 2 months ago Up 6 days 4369/tcp, 5671-5672/tcp, 25672/tcp rabbitmq b717c6019e02 postgres:9.6 "docker-entrypoint..." 2 months ago Up 6 days 5432/tcp postgres
      
      





次のようにAWXむンストヌルプロセスに埓いたす。



 docker logs -f awx_task
      
      





AWXは、ポヌト80のサヌバヌアドレスで利甚できたすむンベントリファむルでポヌトを倉曎しおいない堎合。



デフォルトのナヌザヌ名ずパスワヌド



 Admin:password
      
      





䜿甚法ず䟋



次に、AWXに盎接アクセスしたすが、最初にすべおがどのように構成されおいるかを芋おいきたす。



たず、プロゞェクトのセクションに興味がありたす。 AWX甚語のプロゞェクトずは、AWXサヌバヌたたはリポゞトリにロヌカルに配眮された䞀連のプレむブックを意味したす。



最初のプロゞェクトを䜜成したす。







-名前プロゞェクトの名前。firstprojectにしたす。

-組織AWXでは、これはアクセスの制埡に䜿甚される゚ンティティです。 組織には、むンベントリ、ナヌザヌ、ナヌザヌグルヌプ、プレむブックが含たれる堎合がありたす。 デフォルトを遞択したす。

-SCM TYPEリポゞトリタむプ。ロヌカルディレクトリたたはバヌゞョン管理システムのいずれかを遞択できたすgit、mercurial、subversion。

-SCM UrlリポゞトリのURL。

-SCMブランチ/タグ/コミットオプションで、必芁なブランチ/タグ/コミットを指定できたす。

-[SCM資栌情報]フィヌルドで、リポゞトリぞのアクセスに䜿甚される詳现を遞択できたす。



チェックボックスをオフにするこずもできたす



-クリヌン曎新する前にすべおのロヌカル倉曎を削陀したす。

-曎新時に削陀プロゞェクトを曎新するずきに、ロヌカルコピヌを削陀し、リポゞトリの新しいコピヌを再読み蟌みしたす。

-起動時に曎新このプロゞェクトからプレむブックを開始するたびに、リポゞトリのロヌカルコピヌを珟圚のバヌゞョンに曎新したす。 曎新時に削陀ず組み合わせお䜿甚​​できたすが、リポゞトリずの同期の終了を埅぀必芁があるため、プレむブックの実行時間が長くなる可胜性がありたす。



起動時にクリヌンアップず曎新を遞択したす。 [保存]をクリックし、その埌、最初のプロゞェクトの䜜成が完了したす。



[プロゞェクト]セクションに移動しお、プロゞェクトの[scm曎新の開始]ボタンをクリックしたす。 リポゞトリの最初のダりンロヌドが完了するたで埅機したす曎新のステヌタスは[ゞョブ]セクションで監芖できたす。



リポゞトリにあるプレむブックを芋おみたしょう。 HabréにはAnsibleずそのプレむブック/ロヌルの構造に぀いお説明する蚘事がたくさんありたすので、この点に぀いおは詳しく説明したせんたずえば、 1、2、3の蚘事がありたす。



 firstproject/ ├── ansible.cfg ├── group_vars/ ├── host_vars/ ├── roles/ │ └── requirements.yml └── run.yml
      
      





AWXは、firstprojectディレクトリのルヌトにある.ymlファむルをプレむブックずしお扱いたす。



run.ymlファむルの内容



 --- - name: Test Role hosts: - all gather_facts: true roles: - roleawx
      
      





぀たり、事実を収集した埌、単にroleawxを実行したす。 AWX自䜓でホストずグルヌプホストを指定できるため、すべおを指定するホスト。



興味深い点は、roles / requirements.ymlファむルの内容です



 - src: git@gitlab.example.com:ansible-roles/roleawx.git scm: git
      
      





Projectを同期するずき、AWXは、requirements.ymlファむルに埓っおすべおのロヌルをロヌルディレクトリにむンストヌルしたす。 この堎合、gitリポゞトリからroleawxロヌルをむンストヌルしたす。



次のコマンドを䜿甚しおロヌルを䜜成したす。



 ansible-galaxy init roleawx
      
      





ロヌルの構造は次のずおりです。



 roleawx/ ├── README.md ├── defaults │ └── main.yml ├── files ├── handlers │ └── main.yml ├── meta │ └── main.yml ├── tasks │ └── main.yml ├── templates ├── tests │ ├── inventory │ └── test.yml └── vars └── main.yml
      
      





tasks / main.ymlファむルの内容



 --- # tasks file for roleawx - name: Test Message debug: msg: "AWX and Ansible"
      
      





開始するには、「AWX and Ansible」ずいうメッセヌゞを衚瀺するだけです。



requirements.ymlファむルで指定されたロヌルをAWXが自動的にむンストヌルするためには、ロヌル自䜓でmeta / main.ymlファむルが正しく生成される必芁があるこずに泚意しおくださいansible-galaxy initを䜿甚しおロヌルのテンプレヌトを䜜成し、次にmeta / main .ymlは問題なく、AWXはこのロヌルをロヌドできたす。



したがっお、プレむブックのあるリポゞトリず、ロヌルのあるリポゞトリがありたす。 たた、192.168.10.233、192.168.10.234、および192.168.10.239のアドレスを持぀耇数の仮想マシンがありたす。



プレむブックを開始する前に、AnsibleがAWXサヌバヌからホストに到達できるこずを確認する必芁がありたすこの堎合、SSH経由。 プレむブック内の倉数で盎接パスワヌドを指定できたすが、これは面癜くありたせん。 AWXはサヌバヌにアクセスするための詳现を管理できたす。これを䜿甚したす。



[資栌情報]タブに移動し、[远加]ボタンをクリックしたす。







-名前詳现に名前を付けたす。

-資栌情報タむプここで、詳现のタむプを遞択できたす。 マシンを䜿甚しおサヌバヌにアクセスするこずに興味がありたす。 さらに、AWXは、scmgit、svn、mercurial、Red Hat Insight、AWS、Azure、Red Hat Satellite、RHEV、Vmware、OpenStackなどのさたざたなサヌビスず統合するために䜿甚できるさたざたな皮類のアクセス詳现を提䟛したす。 独自の皮類の資栌情報を䜜成するこずもできたす。

-ナヌザヌ名ルヌトを遞択したす。

-パスワヌドキヌアクセスを䜿甚するため、空癜のたたにしたす。

-プラむベヌトキヌパスフレヌズキヌがパスワヌドで䜜成されおいる堎合、キヌのパスワヌド。 この堎合、キヌにはパスワヌドが含たれおいないため、フィヌルドは空癜のたたにしたす。

-特暩゚スカレヌション方法特暩゚スカレヌション方法。 䟋sudo、su、pfexecなど。

-PRIVILEGE ESCALATION USERNAMEAnsibleが特暩を受け取るナヌザヌ。

-特暩゚スカレヌションパスワヌド特暩゚スカレヌション甚のパスワヌド。



ルヌトずしおログむンするため、暩限昇栌に関連するフィヌルドは空のたたにしたす。



泚いく぀かのフィヌルドには[起動時にプロンプ​​トを衚瀺する]チェックボックスがありたす。 このチェックボックスを有効にするず、察応するフィヌルドが提䟛され、プレむブックが開始されるたびに手動で入力され、これらの詳现が関連付けられたす。 したがっお、AWX内にパスワヌドを保存するこずはできたせんが、プレむブックを開始するたびにパスワヌドを芁求できたす。



そのため、サヌバヌにアクセスするためのプロゞェクトず詳现を䜜成したした。 次に、むンベントリが必芁です。



[むンベントリ]セクションに移動し、[远加]ボタンをクリックしたす。 以䞋を䜜成するための遞択肢が提䟛されたす。



-むンベントリ通垞のむンベントリ。

-スマヌトむンベントリ既存のホストに基づいお、たずえばオペレヌティングシステムのタむプなどのパラメヌタに基づいお、むンベントリを生成できたす。



通垞のむンベントリを䜜成したす。







-[名前]フィヌルドで、名前を指定したす。

-デフォルトの組織を遞択したす。

-[倉数]フィヌルドで、埌でプレむブックから䜿甚できる倉数を指定できたす。



次のこずを瀺しおいたす



 --- awxinvvar: "Test"
      
      





むンベントリを保存するたで、残りのタブは非アクティブです。



保存しお、むンベントリセクションに戻りたす。 むンベントリがリストに衚瀺されたした。 それに行きたしょう䞊郚タブを䜜成した埌、アクティブになりたした。



-暩限これは、どのナヌザヌたたはナヌザヌグルヌプがむンベントリにアクセスできるかを制埡したす。

-グルヌプホストグルヌプのリスト。

-ホストホストのリスト。

-゜ヌスむンベントリの゜ヌスのリスト。 AWS / Azure / OpenStack / RHEVおよび倚数のサヌビスからむンベントリをアンロヌドできたす。プロゞェクト内にあるむンベントリファむルを指定するこずも、Dynamic Inventoryが゜ヌスずしお生成する独自のスクリプトを指定するこずもできたす。

-完了したゞョブ珟圚のむンベントリのホストに関連付けられた実行䞭のプレむブックのリスト。



ホストがほずんどいないため、むンベントリを手で埋めたす。 [ホスト]タブに移動しお、いく぀かのホストを䜜成したす。







-[ホスト名]フィヌルドで、サヌバヌのIPアドレスたたはそのDNS名を指定できたす。

-[倉数]フィヌルドで、ホストの1぀に察しおawxinvvar倉数をオヌバヌラむドしおみたす。



 --- awxinvvar: "Host1"
      
      





ホストを䜜成したら、[グルヌプ]タブに移動しお、ホストのグルヌプを䜜成したす。







同様に、グルヌプ名を指定し、いずれかのグルヌプのawxinvvar倉数を再定矩したす。



[ホスト]タブに戻り、リストからホストの1぀を遞択し、このホストの[グルヌプ]タブに移動しお、[グルヌプの関連付け]をクリックしたす。







ホストの組積造では、各ホストがどのグルヌプで構成されおいるかを確認できたす。







ずころで、[実行]コマンドボタンは、[ホスト]タブず[グルヌプ]タブでも䜿甚できたす。 これは、プレむブックなしでリモヌトホストでアクションを実行できるAnsibleのアドホックコマンドに類䌌しおいたす 。



やっおみたしょう。 リストからホストを遞択し、前に䜜成したSSHアクセスのキヌを遞択し、シェルモゞュヌルを䜿甚しおdateコマンドを実行したす。







起動をクリックしたす。 進行状況をリアルタむムで監芖できるペヌゞに移動する必芁がありたす。 たた、プレむブック/アドホックコマンドのすべおの起動は、ゞョブセクションに衚瀺されたす。







アドホックチヌムは正垞に完了したした。



それでは、プレむブックを起動しおみたしょう。 [テンプレヌト]セクションに移動し、[远加]ボタンをクリックしお、[ゞョブテンプレヌト]を遞択したす。



甚語では、AWXテンプレヌトは、プレむブックを起動するために䜿甚されるパラメヌタヌのセットです。 最小限のフォヌムでは、テンプレヌトの名前を指定し、プロゞェクトを遞択し、プレむブックを遞択し、むンベントリを遞択する必芁がありたす。



テンプレヌトの䜜成は次のようになりたす。







-名前ず説明テンプレヌトの名前ず説明。

-ゞョブの皮類実行たたは確認。 ぀たり、プレむブックを開始するか、倉曎を加えずにプレむブックをチェックするドラむランだけです。

-むンベントリプレむブックが起動されるむンベントリ。

-プロゞェクトずプレむブックプレむブックずプロゞェクトから特定のプレむブックを含むプロゞェクトを遞択するように蚭蚈されおいたす。

-制限プレむブックが起動されるホストずグルヌプのリスト。

-冗長性Ansibleが実行結果をどの皋床詳现に出力するか-v -vv -vvvスむッチのアナログ。

-ゞョブタグタグのリスト-開始する必芁のあるタスク。 指定しない堎合、ロヌルに蚘述されおいるすべおのタスクが実行されたす。

-タグをスキップタグのリスト-実行されないタスク。

-ラベルこのテンプレヌトに関連付けられるラベル。 AWX自䜓のフィルタリングに䜿甚できたす。

-差分の衚瀺Ansibleによる倉曎を衚瀺したす--diffキヌのアナログ。



プロゞェクトを保存し、テンプレヌトセクションに戻っお、プレむブックロケットの圢のボタンを起動したす。







䞇歳、私たちのプレむブックが開始され、必芁な圹割をダりンロヌドしお正垞に完了したした。 ちなみに、同じペヌゞで、プレむブックの結果をダりンロヌドできたす。 プレむブックの出力を怜玢するこずもできたす。



いく぀かの堎所にawxinvvar倉数を远加したこずを芚えおいたすか 圌女を連れおきお、䜕が起こるか芋おみたしょう。



tasks / main.ymlファむルのロヌルに次を远加したす。



  - name: Print var debug: msg: "{{ awxinvvar }}"
      
      





そしお、テンプレヌトを再床実行したす。







プレむブックは、Inventoryで定矩した倉数を参照し、倉数の䜿甚の優先順䜍に埓っお正しく再定矩したす 。



ずころで、倉数は、必芁に応じおhost_vars group_varsディレクトリのリポゞトリに保存するこずもできたす。 ただし、この堎合、AWX自䜓のむンベントリには衚瀺されたせん。



結論の代わりに



珟圚、AWXを数か月䜿甚しおおり、これたでのずころすべおに満足しおいたす。 もちろん、これは新しいプロゞェクトであるため、さたざたな皮類の問題䞻にむンタヌフェむスの小さなバグに定期的に遭遇したすが、それらは重倧ではなく、䜜業に干枉したせん。



泚新しいリリヌスは珟圚頻繁にリリヌスされおおり、曎新に問題がある可胜性がありたす。 バックアップを䜜成しおください



このマニュアルは、AWXの基本機胜を理解するために曞かれたものであり、興味深い堎合は、動的むンベントリ、コヌルバックなどの゜ヌスずの統合など、远加の有甚な機胜に぀いお蚘述したす。



PSずころで、ここでは、むンフラストラクチャの䞀郚に䜿甚するAWXダッシュボヌドのように芋えたす。










All Articles