技術書典4に行ってきた :-)
そんなわけで、技術書典4に行ってきました :-)
今まで体調とか色々あって行けなかったけど、今回やっと行くことができました ><
天気が良くて人がたくさん来るだろうということで、早めに行ってきました。
で、整理券をもらうために並ぶことに...
有明漫画祭の三日目東館に比べたら....楽だよね...
でもしんどかった...
なんとか整理券をゲットして入場...
結構人が多くて大変でしたが、ほしい本や知り合いに会うことができたので、とりあえず撤収~
で、戦利品...
散財してしまいました...orz
使った金額.... 考えるのは....やめました....( ノД`)
とりあえず撤収した後に、久しぶりにシャッツキステに行って一休み...
本を買って、なんか満足してできる気にだけなっていますw
さて、明日から月曜が始まる ヾ(:3ノシヾ)ノシ
今日届いた本
ちょっとブログ更新が滞っています...orz
う~ん、なかなか思うように事が進まないヾ(:3ノシヾ)ノシ
そんな中、今日届いた本...
Software Design 2018年5月号
- 出版社/メーカー: 技術評論社
- 発売日: 2018/04/18
- メディア: 雑誌
- この商品を含むブログを見る
今回は、HashiCorp入門につられて買いました :-)
データベースの特集もちょっと気になるけど、今は自動化に興味があるので...
Python Markdownを使ってみよう
Jupyter Notebookを使って運用する際、運用対象のホスト名称やIPアドレスを変数に定義して記述すると、実行手順を記述したNotebookの再利用がやりやすくなります。
この際、変数に定義した値がMarkdownにも使えると、ホスト名称などをMarkdown形式で記述した部分も、記述を変更することなく再利用することができるようになります。
そんな用途に使えるのが、Jupyter NotebookのextensionにあるPython Markdownです :-)
Python Markdownの説明は、この動画を観るとよくわかると思います。
IPython NB extension PythonMarkdown
今日は、このPython Markdownを有効にする方法などを書いてみようと思います。
Python Markdownの有効化
最初は、extensionにあるPython Markdownを有効にする方法です。
まず、Jupyter Notebookのホーム画面のNbextensionsを選択してください。
選択すると、下の画面のようにextensionを有効/無効にする画面になります。この画面にある、Python Markdownのチェックボックスを選択すると、Python Markdownが使えるようになります。
Python Markdownの使用例
Notebookを作る際、運用対象のホスト名称やIPアドレスを変数に定義して、その変数の値をNotebookのコマンド実行セルに使用することで、Notebookの再利用性が上がったり、Notebookのメンテナンスがやりやすくなります。
たとえばこんな感じです。まず一番最初のセルに、変数にしたいホスト名称やIPアドレスの定義をします。
この例では、こんな感じに、検証対象のホスト名称と、疎通確認先のIPアドレスを定義しています。
host_name='dev01' cent_dev_ip='10.0.1.1'
Markdownの記述の中で変数の中身を表示したい場合は、以下のように{{ }} で変数を囲みます。
検証ノード({{host_name}})の動作確認
このように記述すると、Python Markdownが変数の値を、Markdownとして出力してくれるようになります。
セルの中のコマンドで変数を使う場合は、以下のように変数名の先頭に$を付けると、セルの中で変数の値に展開されます。
!ansible -b -m shell -a 'ping -c 3 $cent_dev_ip ' $host_name
こんな感じで、変数を使ったNotebookを実行してみた結果が、以下の画面になります。
Markdownのところを見ると、変数の値が展開されて「検証ノード(dev01)の動作確認」となっています。
Python Markdownが使えると、この例のように、変数名を指定することでMarkdownに変数値を出力できるようになるので、実際の変数値をコピペして記述するという、冗長でミスの増える作業から開放されます :-)
セルでのコマンド実行結果も、変数の値が展開されています。
dev01 | SUCCESS | rc=0 >> PING 10.0.1.1 (10.0.1.1) 56(84) bytes of data. 64 bytes from 10.0.1.1: icmp_seq=1 ttl=64 time=0.313 ms 64 bytes from 10.0.1.1: icmp_seq=2 ttl=64 time=0.307 ms 64 bytes from 10.0.1.1: icmp_seq=3 ttl=64 time=0.270 ms --- 10.0.1.1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 1999ms rtt min/avg/max/mdev = 0.270/0.296/0.313/0.027 ms
今回の例で作成したNotebookですが、このNotebookファイルをコピーして、最初に定義しているhost_nameの値を'dev02'と書き換えるだけで、dev02用Notebookとしてそのまま使えるようになります。
このように変数をうまく使うと、Notebook内での設定ミスを減らしたり、Notebookの再利用がやりやすくなります。
それでは :-)
今日届いた本
ここのところ、暖かい日が続いています :-)
そんなわけで、今日届いた本...
Effective DevOps
Effective DevOps ―4本柱による持続可能な組織文化の育て方
- 作者: Jennifer Davis,Ryn Daniels,吉羽龍太郎,長尾高弘
- 出版社/メーカー: オライリージャパン
- 発売日: 2018/03/24
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る
プログラム開発がメインだった頃に、遅かれ早かれDevOpsの方向に進むことになるだろうなぁ...と思い始めて早6年...
色々ある中、Ops寄りの仕事を取ってきたりして、少しづつ下地を固めてつつ現在に至っているので、こういう本は見逃せなかったりします :-)
これから数年は、このDevOpsという文化の中で仕事をしていくことになるのかなぁと思っています。
会話もメールも 英語は3語で伝わります
- 作者: 中山裕木子
- 出版社/メーカー: ダイヤモンド社
- 発売日: 2016/10/15
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (24件) を見る
今日届いたわけではないのですが、週末に買った本...
英語が超絶苦手で、コンプレックスがあるのですが、たまにこういう本を買って自己満足しています....orz
SVOだけでやってしまえ...という荒っぽい内容ですが、あぁ...こういう考え方もあるなぁ...ってので面白かった
あと、日本語の言語の思考プロセスを変えないと、英語って難しいよなぁ...ってのも再確認したのでしたヾ(:3ノシヾ)ノシ
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を実行してみた内容になります :-)
今日届いた本
三月終盤でもうすぐ4月だというのに雪です...orz
寒い...
そんな中、Amazonに頼んでいた本が届きました。
こんな天気の日に配達させてしまってごめんなさい >クロネコヤマトさん
ソフトウェアデザイン 2018年4月号
- 出版社/メーカー: 技術評論社
- 発売日: 2018/03/17
- メディア: 雑誌
- この商品を含むブログを見る
今月号は、第1特集の機械学習の始め方と、第2特集のPythonマイツール作成で仕事効率化目当てで買いました。
scikit-learnにちょっとだけ興味があったので、導入になればいいなぁ...って思っていたら、5月号からscikit-learnの連載が始まるらしい...