Memo Log

PANTO MAIMU 's Personal Blog

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 の下になります。

f:id:PANTOMAIMU:20180321134704p:plain
/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は

  1. ansibleユーザ追加
  2. 公開鍵配置
  3. 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は

  1. SELinux無効化
  2. sshでのパスワードログインの無効化
  3. チャレンジレスポンス認証の無効化
  4. rootログインの無効化
  5. sshd再起動

になります。

Notebookからplaybookを実行してみる

それでは、作成したplaybookをNotebook上で実行してみます。
playbookを実行する前に、インベントリファイルが準備されていることを
確認してください。

インベントリファイルの作成

運用で使えるJupyter Notebookコンテナ構築手順まとめ - Memo Log

まず新規にNotebookを作成します。
Notebook生成手順は、前のブログのここを参照してください。

Notebookからansibleを実行してみる

運用で使えるJupyter Notebookコンテナ構築手順まとめ - Memo Log

Notebookができたら、Ansible実行用アカウント登録playbookを実行してみます。
Notenookのセルに、!付きでansible-playbookコマンドを入力します。

f:id:PANTOMAIMU:20180321144122p:plain
ansible-playbook実行

入力内容は以下の通りです。

!ansible-playbook ansible/add_ansible_user.yml -e 'ansible_user=root ansible_ssh_pass=xxxxxxx'

Ansible実行用アカウント登録ですが、最初はrootでのパスワードログインで実行します。
xxxxxxxには、rootのパスワードを入力します。

入力したコマンドは、Runボタンを押して実行します。
実行すると、セルの下に実行結果が出力されます。

f:id:PANTOMAIMU:20180321145201p:plain
Ansible実行用アカウント登録playbook実行結果

同じように、次はsshd設定の変更playbookを実行してみます。

!ansible-playbook ansible/sshd_setup.yml

実行結果は、以下のようになります。

f:id:PANTOMAIMU:20180321145157p:plain
sshd設定の変更playbook実行結果

この実行結果は、Jupyter Notebook形式のファイルとして保存されます。
GitHubは、このJupyter Notebook形式ファイルに対応しているので、実行手順や結果をGitHubに公開して共有することも出来ます :-)

今回のこのNotebookに、Markdown形式でコメントを追加したものを公開しています。
github.com

Markdown形式のコメントを記述すると、Jupyter Notebookでは左側に目次をツリー形式で表示することができます。

f:id:PANTOMAIMU:20180321150404p:plain
目次の表示
ツリー側で目次を選択すると、その目次のセルにフォーカスが移動するので、ドキュメントを参照するように、手順に沿ってオペレーションができるようになります。

以上が、NotebookからAnsibleを実行してみた内容になります :-)