NotebookからAnsibleを実行してみる
今日は、前のブログで構築したJupyter Notebook環境で、Ansibleを実行してみようと思います。
今回、Ansibleで実行してみる内容は、
- Ansible実行用アカウント登録
- sshd設定の変更
です。
Ansibleで運用するノードを新たに追加する場合に必要なオペレーションだと思うので、構築した検証環境で実行してみます。
この2つのオペレーションをplaybookにして、このplaybookをNotebookから実行してみます。
Notebook上のplaybook配置場所の説明
まず、Notebook上でplaybookを配置する場所についての説明をします。
前のブログでJupyter Notebookを環境した際に、ansibleのインベントリファイルを作成しましたが、その時に作成した~/sys-ope/notebooks/ansible にplaybookを配置します。
Notebook上では、以下のように/ansible の下になります。
Ansible実行用アカウント登録playbook
まずはAnsible実行用アカウントの登録と公開鍵の登録playbookを作ります。
ファイル名は add_ansible_user.yml として作成します。
作成は、/ansibleの下でNewボタンのプルダウンでテキストファイルを作成してからrenameしてから、Notebook上で編集して下さい。
面倒であれば、PC上で作成したうえでUploadしてもよいです。
add_ansible_user.yml
--- - hosts: all become: yes tasks: - name: add ansible user user: name=ansible - name: add public key authorized_key: user: ansible key: "{{ lookup('file', '/home/bit_kun/.ssh/ansible_id_rsa.pub') }}" - name: add sudo lineinfile: dest: /etc/sudoers backup: yes line: 'ansible ALL=(ALL) NOPASSWD: ALL'
実行しているTaskは
- ansibleユーザ追加
- 公開鍵配置
- sudo権限付与
になります。
公開鍵ファイルであるansible_id_rsa.pubは、Jupyter Notebookを環境した際に生成した鍵セットになります。
sshd設定の変更playbook
次はsshdの設定をplaybookを作ります。
ファイル名は sshd_setup.yml として作成します。
sshd_setup.yml
--- - hosts: all become: yes tasks: - name: disable SELinux selinux: state: disabled - name: disable password ssh login lineinfile: dest: /etc/ssh/sshd_config regexp: "^PasswordAuthentication" insertafter: "^#PasswordAuthentication" line: "PasswordAuthentication no" - name: disable ChallengeResponseAuthentication lineinfile: dest: /etc/ssh/sshd_config regexp: "^ChallengeResponseAuthentication" insertafter: "^#ChallengeResponseAuthentication" line: "ChallengeResponseAuthentication no" - name: disable root login lineinfile: dest: /etc/ssh/sshd_config regexp: "^PermitRootLogin" insertafter: "^#PermitRootLogin" line: "PermitRootLogin no" - name: restart sshd service: name: sshd state: restarted
実行しているTaskは
になります。
Notebookからplaybookを実行してみる
それでは、作成したplaybookをNotebook上で実行してみます。
playbookを実行する前に、インベントリファイルが準備されていることを
確認してください。
インベントリファイルの作成
運用で使えるJupyter Notebookコンテナ構築手順まとめ - Memo Log
まず新規にNotebookを作成します。
Notebook生成手順は、前のブログのここを参照してください。
Notebookからansibleを実行してみる
運用で使えるJupyter Notebookコンテナ構築手順まとめ - Memo Log
Notebookができたら、Ansible実行用アカウント登録playbookを実行してみます。
Notenookのセルに、!付きでansible-playbookコマンドを入力します。
入力内容は以下の通りです。
!ansible-playbook ansible/add_ansible_user.yml -e 'ansible_user=root ansible_ssh_pass=xxxxxxx'
Ansible実行用アカウント登録ですが、最初はrootでのパスワードログインで実行します。
xxxxxxxには、rootのパスワードを入力します。
入力したコマンドは、Runボタンを押して実行します。
実行すると、セルの下に実行結果が出力されます。
同じように、次はsshd設定の変更playbookを実行してみます。
!ansible-playbook ansible/sshd_setup.yml
実行結果は、以下のようになります。
この実行結果は、Jupyter Notebook形式のファイルとして保存されます。
GitHubは、このJupyter Notebook形式ファイルに対応しているので、実行手順や結果をGitHubに公開して共有することも出来ます :-)
今回のこのNotebookに、Markdown形式でコメントを追加したものを公開しています。
github.com
Markdown形式のコメントを記述すると、Jupyter Notebookでは左側に目次をツリー形式で表示することができます。ツリー側で目次を選択すると、その目次のセルにフォーカスが移動するので、ドキュメントを参照するように、手順に沿ってオペレーションができるようになります。
以上が、NotebookからAnsibleを実行してみた内容になります :-)