Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AnsibleでOrchestrationを体感しよう!
Search
Kei Iwasaki
October 20, 2013
Technology
0
780
AnsibleでOrchestrationを体感しよう!
NODE-Setagaya#5 (
http://www.zusaar.com/event/1102005
) で使った資料です。
Kei Iwasaki
October 20, 2013
Tweet
Share
More Decks by Kei Iwasaki
See All by Kei Iwasaki
ECS Scheduled Task 上の定期実行バッチを ecschedule で GitOps 化した話 / A story about a scheduled execution batch on the ECS Scheduled Task converted to GitOps with ecschedule
laughk
2
11k
Python と出会ったインフラエンジニアの話 / / The story of an infrastructure engineer who met Python
laughk
0
1.2k
MSPだってプロビジョンしたい!
laughk
1
5.5k
Cli mini Hack!#1 ~Terminalとの親睦を深めよう~
laughk
0
2.7k
Other Decks in Technology
See All in Technology
AIのための オンボーディングドキュメントを整備する - hirotea
hirotea
9
2.3k
テストを実施する前に考えるべきテストの話 / Thinking About Testing Before You Test
nihonbuson
PRO
14
2.1k
Data Hubグループ 紹介資料
sansan33
PRO
0
1.7k
Eight Engineering Unit 紹介資料
sansan33
PRO
0
3.2k
新卒から4年間、20年もののWebサービスと向き合って学んだソフトウェア考古学 - PHPカンファレンス新潟2025 / new graduate 4year software archeology
oguri
2
360
OSMnx Galleryの紹介
mopinfish
0
150
Redmineの意外と知らない便利機能 (Redmine 6.0対応版)
vividtone
0
1.2k
AIの電力問題を概観する
rmaruy
1
220
GigaViewerにおけるMackerel APM導入の裏側
7474
0
460
FastMCPでSQLをチェックしてくれるMCPサーバーを自作してCursorから動かしてみた
nayuts
1
220
CloudBruteによる外部からのS3バケットの探索・公開の発見について / 20250605 Kumiko Hennmi
shift_evolve
3
190
技術書典18結果報告
mutsumix
2
180
Featured
See All Featured
Optimising Largest Contentful Paint
csswizardry
37
3.3k
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.8k
GitHub's CSS Performance
jonrohan
1031
460k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
460
It's Worth the Effort
3n
184
28k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.3k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
30
2.1k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.2k
Six Lessons from altMBA
skipperchong
28
3.8k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Raft: Consensus for Rubyists
vanstee
137
7k
Transcript
Ansible で Orchestration を ! 体感しよう NODE-Setagaya#5 2013.10 @laugh_k
最近話題の Ansible という ” ” いわゆる 構成管理 ツールを実際にさわってみて とりあえずみんなで !
!! ! 「おー すげー 」って言おうぜ という内容です 突っ込んだことはできないです 今回の NODE-Setagaya
Python 製の構成管理ツール おおまかには以下のような特徴がある。 • 作業対象は sshd のみ入っていればよく 特別なエージェントなどは必要ない ※ ただし
python-simplejson には依存している • Playbook と呼ばれる YAML 形式のファイルで 作業内容を記載しておくことができる • SSH コマンドのオプションを環境変数で渡せるため ssh_config を用いた多段 SSH も使える。 Ansible とは
というわけで !! さっそく試してみよう
1.環境の準備
1. 環境の準備 まずは Python の開発環境を整えます。 実は yum や apt でも入れることはできますが、
せっかくなのでこの機会に ! 以下のようなモダンな環境の整え方を抑えておきましょう • pyenv https://github.com/yyuu/pyenv 複数バージョンの Python をインストール、管理が可能。 • pyenv-virtualenv https://github.com/yyuu/pyenv-virtualenv virtualenv を pyenv 環境で使えるようにしたプラグイン。 アプリケーションごとにモジュールを管理することができる。
1. 環境の準備 1-1. pyenv, pyenv-virtualenv のインストール ※ Unix 系環境が前提 %
cd % git clone git://github.com/yyuu/pyenv.git .pyenv % cat >> ~/.bashrc << \EOF > > ## pyenv Configure > export PYENV_ROOT="$HOME/.pyenv" > export PATH="$PYENV_ROOT/bin:$PATH" > eval “$(pyenv init -)” > EOF % exec $SHELL
1. 環境の準備 1-1. pyenv, pyenv-virtualenv のインストール ※ Unix 系環境が前提 %
cd .pyenv/plugins % git clone git://github.com/yyuu/pyenv-virtualenv.git % pyenv rehash
1. 環境の準備 1-2. pyenv 経由で Python2.6 系最新のインストール ※ Unix 系環境が前提
※ ライブラリ足りないと怒られるかも .. % pyenv install -l % pyenv install 2.6.8 % pyenv rehash
1. 環境の準備 1-2. ansible 用の Python 環境を作成 ※ Unix 系環境が前提
% cd ## 本日の作業用ディレクトリ作成 % mkdir node-setagaya5 ## Ansible 用に 2.6 系で Python 環境を作成 % pyenv virtualenv 2.6.8 node-setagaya5 % cd node-setagaya5 ## 作業フォルダで今回作成した Python 環境を使うように設定 % pyenv local node-setagaya5 ## Ansible のインストール % pip install ansible
そろそろ VirtualBox テンプレート ! 配るよ
2 . コマンドラインで Ansible を試す
2 . コマンドラインで Ansible を試す 2-1. hosts ファイルの作成 作業対象を以下のような感じで定義しておく。 セクションを作るとグループとして扱うことができる。
hosts ファイルの中身 ↓ 詳しいパラメータは を参照 http://www.ansibleworks.com/docs/intro_inventory.html % cd ~/node-setagaya5 % vim hosts [localnet] node-setagaya5 ansible_ssh_host=192.168.10.10
2 . コマンドラインで Ansible を試す 2-1. 試しに ping を打ってみる ”
プログラミングで言う Hello World!!” ! 的なことをやってみましょう % ansible node-setagaya5 \ > -i hosts \ ## 利用する hosts ファイルを指定 > -u root \ ## SSH ログインで使用するユーザーを指定 > -m ping \ ## 利用する ansible モジュールを指定 > -k ## SSH ログインをする際にパスワードの入力を求める場合に指定 SSH password: node-setagaya5 | success >> { "changed": false, "ping": "pong" }
2 . コマンドラインで Ansible を試す 2-2. 試しに適当なコマンドを打ってみる ↓ 利用できるモジュールは を参照
http://www.ansibleworks.com/docs/modules.html % ansible node-setagaya5 \ > -k -i hosts -u root -m command \ > -a 'uname -n' ## リモート先で実行するコマンドを指定 SSH password: node-setagaya5 | success | rc=0 >> node-setagaya5
3 . Playbook を試す
3 . Playbook を試す 3-1. YAML ! 形式で以下のように作る 例 )
sapmle.yml ( あくまで雰囲気を掴むためのものなのでいろいろ不足しております ) Playbook ↓ のモジュール、書き方は を参照 http://www.ansibleworks.com/docs/playbooks.html --- - hosts : node-setagaya5 user : username sudo : yes vars : php_ver : 5.5 handlers : - name : PHP Compile script : install-PHP-{{ php_ver }}.sh task : - name : Install PHP Library yum : name=$items enablerepo=epel state=installed with_items : - libmcrypt - libmcrypt-devel notify : PHP Compile
3 . Playbook を試す 3-2. Playbook の内容を実行する Playbook ! を書いたら実行するのみ
## -C オプションで実際にジョブは実行されずに内容の確認ができる (dry_run) % ansible-playbook sample.yml -i hosts -k -C ## 実際に実行する。基本的なオプションの意味は ansible コマンドと同様 % ansible-playbook sample.yml -i hosts -k
では実際に Playbook ! を書いてみよう