表題の通り、Ansible AWXとGitlab(or Github)を使って構成管理をしてみよーって話を軽く書きます。
構成管理とは、以下のことを指します。
例えば、ネットワーク機器やサーバーの構築/設定変更やサーバー機器のミドルウェア~アプリケーションレベルの構築、
構成の状態の確認等、これらを自動でできます。
※イメージ:Ansibleで対象の機器に対するPlaybookを流すだけ
ここでそれぞれの役割を見てみます。
●Ansible
Jobを実行するサーバ。Jobで実行する内容をPlaybookに記載する。
Playbookのイメージは、やることリストを記載しています。
皆さんが手順書を作成してそれ通り作業をするのと同じで、
Playbookというものに「ネットワークのルーティングを追加して~変更して~」「nginxのバージョンxxをインストールして」的なことを書きます。
またその実行対象を明記したり、機器のパスワードに関する設定、Playbookの実行ログなどを記載しています。
その際に機器の情報が入ったパラメータも使用します。
言語はyamlと呼ばれる、人が読みやすい言語で記述されています。
簡単な英単語が分かれば、プログラミングなんてやったことないよ!!!って人でもとっつきやすいかもです。
※PlaybookやパラメータはGitlab(or Github)に格納します。
どうやってそれらの情報を取得するのか?
一般的にはGit Clone(公開/暗号鍵認証、http認証)で取得するのかなと思います。
※Git Cloneはリポジトリの複製
●Gitlab(or Github)
機器のパラメータ情報をGitlab(or Github)やPlaybookそのものも格納したりするリポジトリサーバの役割です。
機器のパラメータってテキストやExcelで管理しているところが多いかと思いますが、それらをGitlab(or Github)とかで管理します。
言い換えるとそこにあるパラメータが完全に正である必要があります。
これらのパラメータもAnsibleとの組み合わせであればYAML等で記載すれば良いかなと思います。
ただしGitに関する知識が必要なので、割とここはネックかもです。
Ansibleより、Gitの方が理解するのに時間を要するかなと・・・(個人的に)
かなり概要レベルで書きましたが、構成管理をすることで以下のメリットがあるかなと。。。
・作業手順書がいらない!!!(個人的にすごくありがたい・・・)
・手作業によるミスが極めて少なくなる!!!
・作業時間の圧倒的な短縮
・どのパラメータが一番が正しいのか明確
※Playbook実行後、最新のパラメータをGitlab(or GitHub)に自動でpushすれば間違いなく・・・
・yamlが分かれば、ある程度の構築/設定等の操作ができる
デメリットは以下ですかね。。。
・それでもやっぱりyamlが読めるまでには多少の時間がかかる
※チームでするとならば、全員が理解している必要があり、そのしきいをクリアできるかが課題・・・
・Gitの知識がとても大事
※Gitは慣れるまでは難しいです。コマンドたくさんあるし、概念も難しいかなと。。。
【結論】:Gitの有識者とAnsibleの仕組みさえ分かる人がいれば、実装可能かと思われます。
※ただしチーム全員が理解するための最初のハードルは高い。