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 旅行的内容~

广告
将在 10 秒后关闭
bannerAds