[備忘録] Ansibleもくもく会 （第6回）in Osaka で使ったEtherpad #ansiblejp

#Ansibleもくもく会（第6回） in Osaka （powered by エックスサーバー）

こんにちは。レッドハットでAnsibleのビジネス開発をしている中村[@fideleruuth](https://twitter.com/fideleruuth)です。

7月に実施したAnsible Night in Osakaのつてでもくもく会を大阪で初めて開催しました！今回はエックスサーバー様の（めちゃ綺麗でおしゃれな）オフィスで実施いたしました。エックスサーバー様、場所提供ありがとうございます。今回はAWXやAnsible Towerの質問が最初から来るなど、すでに使っていたのだけれど、Towerに興味があるという方が何名かいたようです。アンケート結果を見てみると今日はじめてAnsibleを触ったという方が半分近くいますが、エッジきいた方何名かいたようですね。

アンケートへの回答
![もくもく質問.png](https://qiita-image-store.s3.amazonaws.com/0/211121/f9b36af6-121f-6689-0537-345739f56b4e.png)

今回東京からリモートで質問への対応を支援させていただきました。もちろん、現地でレッドハットのメンバーもヘルプさせていただきました。いつもの通り、質問のやり取りをいつもどおり備忘録までに残しておきます。もしかしたら何かの気付きになるかもしれません。

#質問のやりとり
   * hogehoge と質問すると
       * hugahuga と回答します！！

   * Ansible AWXって何ができるんですか！？　StackStorm的に使えるのかどうかとか、導入の手間とか。
       * 今日触るAnsible TowerのOSS版ですよー
       * Job Workflow機能などを備えていますので、StackStormに期待されることと同じようにも扱えると思います。
       * Ansible Towerのアップストリームに当たります。Ansible Towerと比べると、AWXはコンテナ上でデプロイし動作する仕様になっていて、Linux上などに構築するTowerとは利用可能な方法が異なります。
       * 導入は比較的簡単にできますが、コンテナNWからローカルなどを操作する際のお作法などが必要になります
           * 回答ありがとうございました。


   * Ansible Tower インストールは時間どれくらいかかりますでしょうか？
       * setupコマンドを実行してから体感20分程度です。（マシンスペックにより異なります）
       * インストール手順の最初から最後まで実行しても30分以内に終わると思います。

   * Ansible と Ansible Towerはインストールする時に何か気を付けないといけない事ありますでしょうか？　 (今Ansibleが入っている環境にインストールしているのですが、実際にはそうしてはいけないとか等)

       * Ansible Towerのインストールマニュアル通りに実施していただければほとんど問題ありません。
       * \url{https://docs.ansible.com/ansible-tower/latest/html/quickinstall/prepare.html}
       * 日本語→　\url{https://docs.ansible.com/ansible-tower/3.2.2/html\_ja/quickstart/}
       * 注意点としては、Ansible Engine(Core)と、Towerのサポートバージョンセットがありますので外れないように気をつけてください。
       * \url{https://access.redhat.com/articles/3382771}

   * Ansible端末で/etc/ansible配下にssh\_configファイルを作成したいのですが、書き込み権がないといわれてしまいます。ROOT権限って今回もらえないのでしょうか？
       * student0X ユーザはノーパス sudo 可能です。 
       * 次のコマンドを実行してください。　
       * sudo su -
           * [student08@ip-172-16-0-141 ansible]$ sudo su-
           * sudo: su-: command not found
           * コマンドがないみたいです。
               * ↑su と - の間にスペースが必要ですが、入っていますでしょうか？
                   * 入ってませんでした。できました。
                       * よかったです！！

   * Kuryr遣いの方がいたら話をしたいです！（ from Tokyo ）

   * ansible ～ と実行するのと ansible web ～ と実行する場合の違いは何でしょうか？
       * アドホック実行の演習をされていると思います。例えば、ansible web -m setupというコマンドの場合、アドホックコマンドで、webというグループに対して、setupモジュールを実行するよ、という内容になります。
       * 演習ではそのあとにインベントリファイルの説明がありますが、インベントリ内のwebグループに対して実行するという意味になります。
       * 指定するインベントリファイルのリスト全体に対して実行する場合には、webの代わりにallと記載してください。

       * Ansible Towerサーバーを複数用意し、同じライセンスファイルを複数のサーバーに登録することは技術的にはできますが、ライセンス登録履歴などはRHで確認しています。
       * 通常、無断で上記のような方法を実施する場合、サブスクリプション契約違反になりますのでご注意ください。


   * [Student 13]を利用されているリモート参加の方、これを見ていたらご連絡ください。
       * この時点で何もコメントがないので、たぶん大丈夫。
           * よかった…(?)


   * Ansible端末から各node01~03に対しPing確認をしたいのですが、
       * 下記のようにSUDO　パスワードを求められてしまうのですが、
       * なにを入力すればいいのでしょうか？
       * [root@ip-172-16-0-141 ansible]# ansible all -i hosts -K -m ping
       * SUDO password:

       * [root@ip-172-16-0-141 ansible]# cat hosts
       * [linux]
       * 18.136.105.249
       * 13.250.36.129
       * 13.229.228.11

       * -Kオプションつけないと下記エラーになります。
       * [root@ip-172-16-0-141 ansible]# ansible all -i hosts -m ping
       * 13.250.36.129 | UNREACHABLE! => {
       *     "changed": false,
       *     "msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).\r\n",
       *     "unreachable": true
       * }
       * 18.136.105.249 | UNREACHABLE! => {
       *     "changed": false,
       *     "msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).\r\n",
       *     "unreachable": true
       * }
       * 13.229.228.11 | UNREACHABLE! => {
       *     "changed": false,
       *     "msg": "Failed to connect to the host via ssh: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).\r\n",
       *     "unreachable": true
       * }
           * この演習では、インベントリファイルを新たに作成頂いていると思います。その中で[all:vars]のansible\_passwordなどが入ってないため-kでアクセスに使用するパスワードを入力しないとエラーになります。
           * 演習1.2までは次のパスをデフォルトインベントリとして利用しています。
           * inventory = ~studentXX/lightbulb/lessons/lab\_inventory/studentXX-instances.txt
           * この中には[all:vars]という項目がありますが、新たに作られたインベントリファイルにはこの項目がありません。
               * ありがとうございます。できました。
           * [root@ip-172-16-0-141 ansible]# ansible all -i hosts -m ping
           * 13.250.36.129 | SUCCESS => {
           *     "changed": false,
           *     "ping": "pong"
           * }
           * 13.229.228.11 | SUCCESS => {
           *     "changed": false,
           *     "ping": "pong"
           * }
           * 18.136.105.249 | SUCCESS => {
           *     "changed": false,
           *     "ping": "pong"
           * }
           * [root@ip-172-16-0-141 ansible]#

   * pmrun や runas というのはUNIXなどとかのsudoみたいなものでしょうか？
       * runasはwindowsなどでも利用するsudoのようなコマンドだったかと思います。
       * \url{https://docs.ansible.com/ansible/latest/user\_guide/become.html}
       * 差し支えなければ、どちらからこの質問が出て来たか教えていただけないでしょうか？
       * → Ansible Tower の 2.2 で PRIVILEGE ESCALATION という設定で デフォルト sudo 以外に見慣れないものがあったので記載しました。。
           * なるほど！ありがとうございます！！

   * Ansible Towerの実行は、studentの様な一般ユーザーでの導入でもよいのでしょうか？　 それとも実際はrootなので導入していった方がいいのでしょうか？

       * 実際にはrootアクセスが必要になります。
       * setup.shの中でAnsible Playbookを実行しインストールしていますが、その中でbecome: yes（root実行）が設定されていたはずですので、昇格できれば問題ないはずです。（若干自信がないので今から調べます。）

   * 明日から1ヶ月Ansible Towerを使いたい人は、ansible-jp@redhat.com までご連絡いただければ手配します。会社名・メールアドレスが必要となりますが。。
       * このハンズオンに参加していないメンバからの申請であったり、数週間経ってからの申請であっても大丈夫ですか？（どうなるかわかりませんが。。。）
       * いつでも連絡くださいませ〜
           * 機能制限ありという理解であってますか？
               * こちらにご連絡頂いた場合にご提供するライセンスファイルには機能制限はありません。（期間・対象ノード数には制限があります）
                   * 承知しました。

   * Ansible Towerのライセンス認証はProxy配下でも問題ありませんか？
       * 問題ありません。
           * Proxyの設定はGUIではなくどこかconf上で設定するイメージでしょうか？
           * ライセンスファイルをアップロードした後にアクチベート処理が走りRed Hatのサーバに問い合わせがいく認識なのですが。。。
               * Ansible Towerの認証は、実際にはライセンスキーの確認と期間やホスト数の確認をローカルで実施しています。そのため、イントラネットであってもアクティベートは可能です。
                   * なるほど、そういうことなんですね。わかりました。

   * Ansibleでマヨネーズは作れるようになりますか？
       * やり方によってはできると思いますよ！！！
       * AnsibleでIoT扱うとかこの前のNightで！もありましたもんね！
           * さてはオメーマヨラーだな
               * ば、ばれたか・・・！
           * さぁ、隠しているマヨネーズをだすのじゃ。。
           * さて、隠している場所を探し出せるようにAnsibleを駆使するのじゃ。。
               * ▷vars
               * ▷vault
               * ▶inventory
               * ▷ansible.cfg
       * Kuryr(きゅうり)との相性もばっちり！
       * マヨネーズはからあげともばっちりやで！

   * Towerのセットアップファイルをlightbulbのcurlで落とそうとしたらNG、wgetで取得しました。
       * 私の環境だと下記のようにcurlでも成功しました。何度か試してみると大丈夫かも？
           * [student29@ip-172-16-57-108 ~]$ curl -O \url{https://releases.ansible.com/ansible-tower/setup-bundle/ansible-tower-setup-bundle-latest.el7.tar.gz}
           * % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current  Dload  Upload   Total   Spent    Left  Speed
           * 100  220M  100  220M    0     0  7358k      0  0:00:30  0:00:30 --:--:-- 7998k
           * [student29@ip-172-16-57-108 ~]$ ls
           * ansible-tower-setup-bundle-latest.el7.tar.gz  lightbulb

   * Project(github)の同期が終わらない、という方がいるのですが、これ以前にも同じようなことありませんでしたっけ？どうやって回復したのか記憶が
       * 改善方法として、/var/lib/awx/projects/配下にある該当projectのディレクトリを全て消してから、もう一度Ansible Tower UIからプロジェクトの更新を試してください。

   * Ansible Towerの使い方については、以下のスライドも参考になるかもしれません。
       * \url{https://www.slideshare.net/ssuserf487dc/ansible-tower}

   * ko
       * OK?
           * NP！

   * ジョブテンプレートとワークフローテンプレートの違いは何でしょうか？
       * ジョブテンプレートは単体のPlaybookとInventory、実行可能者などを指定して作成します。
       * ワークフローテンプレートは、複数のジョブテンプレートを繋げて連続したジョブの流れを組むためのものです。
       * ex) あるジョブが成功/失敗したら指定された次のジョブを実行する、など
       * \url{https://docs.ansible.com/ansible-tower/3.2.2/html\_ja/userguide/workflow\_templates.html}
       * 言い方を変えると、複数のプレイブック（yml）をワークフロー化できるという感じ
           * OSセットアップ用.yml →成功したら→ ミドルウェアインストール.yml →失敗したら→みたいな

   * \url{https://github.com/ansible/lightbulb} これは何のプロジェクトですか？
       * これはレッドハットのAnsibleチームが作っている、ハンズオンコンテンツを共有するプロジェクトです。
       * 今回のみなさんの環境もlightbulbの/tool/ansible\_lab\_setupを利用して提供しています。

   * 既にJenkinsなどのジョブ実行サーバーなどが立っている場合の住み分けはどうなりますでしょうか？　 別途専用で立ててJenkinsから実行という感じでしょうか？それとも、どちらがプロジェクトに適しているかを選定して、導入可否決める感じでしょうか？

       * ジョブ実行サーバーがある場合、JenkinsなどからAnsible Towerのジョブを実行していただくことも可能です。これはAnsible TowerがEngine(Core)単体と異なりREST APIを備えているためです。　　　→ >JenkinsなどからAnsible Towerのジョブを実行していただくことも可能
　　　　ansible Playbookを実行せずに、ジョブを実行するメリットは何でしょうか？履歴が残るから良い感じでしょうか？

           * 実行権限管理、実行履歴・結果管理ができることもメリットの一つです。
           * そのほかに、ジョブの実行順序管理・分散実行（冗長性）もメリットです。

#所感
今回はリモートヘルプだったので、ちょっと様子がよくわからなかったということもありますが、質問のやり取りの盛り上がりから見て取れるとおり、カジュアルかついろんな質問がでて有意義だったと思います。大阪でも終わったあとのAnsible飯で盛り上がったことでしょう。

ここ半年月に一回程度開催しているAnsibleもくもく会ですが、通常のもくもく会とはちょっと異なり、リソースが準備されていたり、教材が準備されてます。メンターの方や、レッドハット社員など、初心者の方でもフォローする体制がだんだんできてきております。是非お気軽にご参加ください。

また、大阪・福岡などの地方に関しては、レッドハットの営業支社がありますが、勉強会を開けるような規模の会場がありません。もし会場を貸してくれるという方、Ansibleもくもく会をやってもいい/やりたい、という方がいらっしゃいましたら中村[@fideleruuth](https://twitter.com/fideleruuth)までご連絡いただけると非常にありがたいです！