『Pythonエンジニア養成読本』読書会便り ~基礎やTipsから質疑応答の内容まで~

第5回 環境構築の自動化,活躍の場が広がるPython

この記事を読むのに必要な時間:およそ 7 分

6-4 よく使うモジュール

この節では200以上もあるAnsibleのモジュールのうち,よく使われるものを紹介しています。書籍では以下のモジュールを紹介しています。

  • script:スクリプトを実行する
  • shell:任意のコマンドを実行する
  • file:ファイルの作成,所有者の変更などのファイル操作を行う
  • template:Jinja2テンプレートを使用して変数を埋め込んだファイルを生成する
  • unarchive:圧縮ファイルを展開する
  • apt:aptコマンドを使用する
  • user:ユーザを追加,削除する

この中で一番知ってほしいのはscriptモジュールで,scriptモジュールがあれば今使っているスクリプトをそのままAnsibleで使えるようになります。creates引数を指定すると,一度だけ実行されるスクリプトになります。こうすることにより,簡易的にべき等性のあるスクリプトとなります。

scriptモジュール

tasks:
  - name: command.shを実行する
    script: command.sh
  - name: files/other.shを実行する。/tmp/done.txtがあれば実行しない
    script: files/other.sh creates=/tmp/done.txt

Ansible 1.9では260,Ansible 2.0では400くらいのモジュールがあるそうです。何か実行したい内容があればdocs.ansible.comを検索してモジュールを探してみてください。

通常のshell scriptと比べて以下のような利点があるため,Ansibleはbetter shell scriptだと考えているとのことです。

  • 複数サーバに並列して実行できる
  • 書き方が統一できる
  • べき等性がある

質疑応答の様子

質疑応答の様子

この節と全体を通して,以下の様な質疑応答がありました。

Q:すべての構成をAnsibleでやるとかいう考えはあるか?

A:とくにはない。目的に合致するもっといい方法があればそちらを使うべき

Q:DockerKubernetesなどのコンテナ技術と,Ansibleのような環境構築の自動化はそのように使い分けたらよいのか? Capistranoとかともまた違うのか? Ansibleの使いどころを知りたい

A:自動化ツールとして以下の2系統があり,Ansibleは両方できることが売りになっている。SIMPLE. AGENTLESS. POWERFUL.がAnsibleの特徴

  • Configration Management Tool(構成管理ツール⁠⁠:Chef,Puppetなど
  • Orchestration Tool(リモート実行ツール⁠⁠:Capistrano,Fabricなど
Q:Ansible.comはどうやって稼いでいるのか?

A:Ansible.com社の人がメインでAnsibleを開発をして公開している。Ansible社はAnsible Towerというツールを販売している。Ansilbe TowerはWeb画面からAnsibleを実行したり,Webhookで実行したりといった様々な機能を提供している。他にはAnsibleのトレーニングやコンサルティングを実施している。しかし,⁠若山史郎さんは)Ansible Towerを使ったことはない

Q:「Orchestration Tool(リモート実行ツール)としても使える」とあったが,複数サーバ間で連携して動作させることは可能か? AサーバのDBがインストールされたら,BサーバのXXXをインストールする,といったようなことを想定している

A:分散実行ではなく,シリアルで順番に実行すれば良いと思う

Q:Playbookのファイルをリポジトリで管理するのが望ましいとあったが,リポジトリはどこに置くべきか?

A:Gitを使うのであればGitHubでも良いし,社内のGitサーバでも良い

Q:sshの秘密鍵の管理はどうすれば安全になるか? 秘密鍵そのものをリポジトリにコミットしたくない

A:ファイルについては分けておいたほうが良い。パスワード,Tokenとかの秘密情報をPlaybookに書きたい場合がある。その場合はAnsible Vaultという機能で暗号化した情報をPlaybookに書き込み,実行時にVault用のパスワードを入力して復号化して実行ということができる。HashiCorpのVaultも秘密情報を持てるので,Ansibleと連携すると良いかも知れない。

Appendix2 ますます活躍の場が広がるPython

少し時間が余ったので,最後のAppendix2の紹介をこの節の著者でもある筆者(鈴木たかのり)から行いました。

Appendix2 について紹介

Appendix2 について紹介

このAppendix2では半分ネタとして,ちょっと変わった環境でもPythonが動作しているということを紹介しています。 書籍では主に以下のような少し変わった環境で動作するPythonについて紹介しました。

  • Pepper:ロボットの動作をPythonでプログラミングできる
  • Micro Python:マイコン上で直接Pythonが実行できる
  • CG:Blender等のCGツールのスクリプトとして利用できる

Pythonは設計思想として「シンプルで読みやすいコードを書けること」があります。この思想により,さまざまなツールのスクリプト言語として採用されているのではないかと考えられます。

余談ですが,書籍にはPepper,Micro Pythonの写真やBlenderの画面が掲載されています。これらの画像を自分で用意するのは大変ですが,これらを使用している知り合いにお願いして画像を提供してもらい非常に助かりました。その節は,ありがとうございました。

著者プロフィール

鈴木たかのり(すずきたかのり)

一般社団法人PyCon JP,副代表理事,株式会社ビープラウド所属。

部内のサイトを作るためにZope/Ploneと出会い,その後必要にかられてPythonを使い始める。PyCon JPでは2011年1月のPyCon mini JPからスタッフとして活動し,2014年-2016年のPyCon JP座長。他の主な活動は,Pythonボルダリング部(#kabepy)部長,Python mini Hack-a-thon(#pyhack)主催など。

共著書に『Pythonによるあたらしいデータ分析の教科書(2018 翔泳社刊)』『Pythonプロフェッショナルプログラミング 第3版(2018 秀和システム刊)』『Pythonエンジニア ファーストブック(2017 技術評論社刊)』『いちばんやさしいPythonの教本(2017 インプレス刊)』などがある。

最近の楽しみはPython Boot Campの講師で訪れた土地で,現地のクラフトビールを飲むこと。2019年は世界各国のPyConでの発表に挑戦している。趣味は吹奏楽とボルダリングとレゴとペンシルパズル。

Facebook:takanory.net

Twitter:@takanory

Github:takanory