2019年6月的Ansible沉思会(服务器部分)的博客空间
2019年06月13日 Ansible集会
地点
红帽恵比寿办公室三楼
开场
AWS Summit or interop (どっちも幕張メッセ)行った人
(自分)ノ
Red Hatブースも盛り上がってました
ソフトウェアデザイン(Ansible回)をばらまいてた
ansibleアップデート
今年に入ってからの活動共有
Trelloで持ち込み企画募ってます
運営側のサポートしてくれる方募集してます
要做的事。
木木会的定位
-
- 参加者自身のペースで学習していく
-
- Engine と Towerが今回のテーマ
-
- 運営側で環境と教材を用意しています
-
- RedHatからサポートメンバー(数名)と、Google Docsで随時質問受け付けてます
サポートしてくださる方(メンター枠)います
QAのサポートくらいのレベル感で大丈夫です
成果共有枠
30分枠で順番にその日やったことを共有してくれる方
ブログ枠
アウトプット枠 ← 今回参加したとこ(connpass見たときにはすでに一般参加枠が埋まってた…)
欢迎所有能够提供输出的人参与。
环境和内容
环境的方向
-
- 50インスタンス x2セット用意
- ↓はログイン後に気になって確認した
[xxx@ansible ~]$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.4 (Maipo)
很高兴见到您
内容(教材)的方向
-
- Ansible Engine演習
- Ansible Tower演習
我已经不是第一次触碰私有部分了,但自从以前认真触碰的时候(大约5、6年前)开始,我一直是个像浦島太郎一样隔离的状态,所以这次我想从基本的地方开始回忆,所以我专注于Ansible Engine。
练习的内容之类的
Ex1. 执行即席命令
在这里,我们确认了库存文件的位置以及库存文件的内容。
# インベントリファイルの場所の確認
[ansible ~]$ cat ~/.ansible.cfg
[defaults]
stdout_callback = yaml
connection = smart
timeout = 60
deprecation_warnings = False
host_key_checking = False
retry_files_enabled = False
inventory = <inventoryファイルの絶対パス> # ココ
# 実際のインベントリファイルの中身
[ansible ~]$ cat <インベントリファイルの絶対パス>
[all:vars]
ansible_user=xxxx
ansible_ssh_pass=xxxx
ansible_port=22
[web]
node1 ansible_host=<ipv4 addr1>
node2 ansible_host=<ipv4 addr2>
node3 ansible_host=<ipv4 addr3>
[control]
ansible ansible_host=<ipv4 addr4>
变成了这样。
在此基础上,
$ ansible web -m ping
$ ansible web -m command -a "uptime" -o
$ ansible control -m command -a "uptime" -o
$ ansible all -m command -a "uptime" -o
等等我确认了。
自己重新进行基本操作时,我注意到或者说发现了以下事实:
-o(-one-line)选项的存在。
根据man的解释,该选项可以将多行的结果压缩成一行。
# つけるパターン
$ ansible all -m command -a "uptime" -o
node2 | CHANGED | rc=0 | (stdout) 06:23:18 up 20:39, 1 user, load average: 0.00, 0.01, 0.05
node1 | CHANGED | rc=0 | (stdout) 06:23:18 up 20:42, 1 user, load average: 0.00, 0.01, 0.05
node3 | CHANGED | rc=0 | (stdout) 06:23:18 up 20:37, 1 user, load average: 0.00, 0.01, 0.05
ansible | CHANGED | rc=0 | (stdout) 06:23:18 up 20:44, 2 users, load average: 0.04, 0.03, 0.05
# つけないパターン
$ ansible all -m command -a "uptime"
node2 | CHANGED | rc=0 >>
06:24:57 up 20:40, 1 user, load average: 0.00, 0.01, 0.05
node1 | CHANGED | rc=0 >>
06:24:57 up 20:43, 1 user, load average: 0.00, 0.01, 0.05
node3 | CHANGED | rc=0 >>
06:24:57 up 20:38, 1 user, load average: 0.00, 0.01, 0.05
ansible | CHANGED | rc=0 >>
06:24:57 up 20:46, 2 users, load average: 0.01, 0.02, 0.05
虽然以前从未关注过,但实际上(如果是这个水平的输出)变得更容易阅读了呢。
※如果使用 -vvvv 这样的东西就很危险了。
Ex2. 初次创建playbook
在肩膀的力放松后,尝试创建playbook的练习。
这一章节里悄悄提到了yaml的开始,但对于初次见到的人会产生困惑、或者会理解为确实是这样的吗,不知道会是哪种情况。
※就个人而言,对于第一次接触的东西来说,我认为后一种情况(最初阶段)更少出现不必要的错误,挫折。
实际内容是,在上一章中确认的web服务器群(3个节点)上安装/卸载httpd。
这是一个类似教程性质的解释,只涉及到安装,而卸载部分有提示供参考。
试着操作时,我注意到卸载时引起了一些疑虑,
就是在state语句中,定义的内容不是”removed”(已移除),而是”absent”(不存在)。
※虽然实际尝试了,但在输出和操作上几乎没有差异。
考虑到Ansible的幂等性,使用”removed”会尝试保持”始终被删除的状态”,而使用”absent”会尝试保持”不存在的状态”。尽管可能只是日语水平的差异,但我认为后者更为恰当。使用”removed”的话,可能会一直执行yum remove(并失败),但使用”absent”的话,会先检查是否存在,如果不存在就什么都不做,感觉更为省心。
使用变量、循环和处理器
在这一章中,我们将介绍ansible中的变量,循环和处理器等类似于编程语言的功能。说实话,我自己也从未意识到变量和控制结构等方面的内容,所以这是一个很好的机会来深入探讨。
顺便说一句,在这章的最后会简单介绍语法检查方法(–syntax-check)。
记忆有些模糊,好像还有–dry-run之类的吧。
执行apache-basic-playbook
这里是尝试执行前一章中创建的playbook的内容。
※由于手动复制粘贴时漏掉了一行,导致出现错误,因此最后一个我直接复制粘贴了(成功地运行)。
Ex5. 角色:使Playbook可重复使用。
我将修改迄今为止创建的playbook,使其可以再次利用。
我要在Ansible Galaxy中初始化角色,
令人惊讶的是,Galaxy又突然出现了( ゚д゚)ポカーン。
我大致知道正在做的事情,
但还是想回顾一下Galaxy的使用方法…
这些成果共享的人们
はるかさん
ansible歴2日です(嘘 ※後日、2日は本当!というコメントいただきました)
前回何事もなく終わったのに、今回まだ終わってません!(2本開けたから…?)
つまずいたとこ
Playbookを実行してみよう(Ex1.2)
httpdを止める順番を変えずに実行してしまった
順番変えてもfailed=1だったが、(インストールされて)ないものを止めようとしていたから
Ex4
謎のエラー(WARNING)がでた
Playbookのインデントが余計に入っていた。
1インデント=1インシデントという名言をもらった
umimaさん
本物のansible歴2日です
普段は上流工程をやっているが、ansibleの話をもらっていて触ってみたかった
変数やハンドラといったことを知れて業務でも使えそう!
ansible galaxyという存在をしった!
時間切れなのでまた今度参加したい!
kmizutaさん
もくもく会2回目の参加
Engineは復習、Towerは初めて
今回は浅い部分を触ったので、もう少し掘り下げてみたい
mizuto1217さん
業務では使ったことがなく、先週くらいからAWS上にansible入れて触っていた
普段はNWを触っていてあまりサーバ系はやったことがなかった
teratermでマクロを作っているのをansibleに置き換えると、構文チェックもあるし便利!
towerも引き続き勉強したい
在这里发表评论
-
- インデントチェックには、yaml lintやansible lintを活用するのもいい
- 実際にはCI/CDと絡めて使ったりする
結論
我发现后半部分的内容较少,因为我没能在短时间内完全理解和消化。所以我打算以后再好好调查一下。
另外,我在参加的时候想到了一些主题和活动内容,我有些犹豫但还是随意地参加了,对此我感到后悔。
但如果你当然想要尝试使用Ansible的话,我认为这是一个能够得到细致支持的地方,所以你可以放心参加。
我把收到的 Ansible 钥匙扣绑在了我的通勤包上。
※ 不定期发布关于 Ansible 旅行的内容~