このブログに記載の内容は個人の見解であり、所属組織の立場、戦略、意見を代表するものでは全くありません。

苦節Windows ansible

作業ログです。日付は降順です。

 

■2016年10月9日

ansibleが入っているVMsshログインして
ansible-playbook /vagrant/provisioning/site.yml

したら/etc/ansible/hostsがないって怒られた
http://yteraoka.github.io/ansible-tutorial/

そうか。作業パスもマシンも違うもんな。

>ちなみに ansible.cfg は次の順で探します
>
>カレントディレクト
>環境変数の ANSIBLE_CONFIG or ~/ansible.cfg
>/etc/ansible/ansible.cfg

まあ/etc/ansible/さえ無いんだけどね。

ん?しかしよくよく見るとカレントディレクトリにhosts
がある。-iオプションでいいのかな?⇒no hosts matchedやて。
あーこっちのは疎通確認だけでグループ指定してないからか

/usr/lib/python2.7/site-packages/ansible
を漁って設定ファイルを探したけど無いので、作れということだろうか?
デフォルトの設定どうなっているんだ。。

下記のサイトに従いたいのだが。。
http://centos.sabakan.red/entry/2015/07/01/140000

ここで衝撃の事実が発覚した。
ansibleが入っているVMhttpdがインストールされてenabled
になっている。
え?okってそのことかよ。。
というのは無理矢理のみこむとしてもhostsの指定と表示は何やねん。
ip違うやろ?

hostsの記述がぬるいのか?
⇒下のように変えてみたけどダメ(ipの扱いが変な気はします)
[trial-target]
192.168.33.12 ansible_ssh_host=127.0.0.1 ansible_ssh_port=2002 ansible_ssh_user=vagrant

もっかい戻って
ansibleが入っているVMsshログインして下記のサイトに従ってやったら、
http://yteraoka.github.io/ansible-tutorial/
ansible-playbookで対象VMにインストールできた。うーん。。

まあ、これでやりたいことはできるような気もするような?
ansibleのVMだけdestroyしたくないなあ。
他は綺麗な環境を再構築しやすい方がいいと思うけれど。

別々のVagrantfileにしてもネットワークがうまく構築されるのだろうか。


■2016年10月8日
これまでのやり方で
sshでno passwordでログインできない
http://blog.ruedap.com/2011/04/04/mac-ssh-key-copy-error

$ chmod 0600 ~/.ssh/id_rsa

id_rsaのコピー方法は
ansibleホストのアクセス先で
$ ssh-keygen -t rsa
⇒オールEnter
$ ssh-copy-id アクセス元IP

よし。ansibleでpingオッケー

http://yteraoka.github.io/ansible-tutorial/
と同じようにやってもhttpdがinstallされない

okになるのがいやらしい。

sshログインして下記でinstallされた。
$ sudo yum -y install httpd

sudo か-y かinstallの記述の方法が変わっているのだろうか。

オライリーを見て設定ファイルを確認しようと思ったが、
配置されているはずの
/etc/ansible/すら無い。
インストール方法がよくなかったのだろうか。。

[vagrant@localhost ~]$ sudo find / -name ansible
/usr/bin/ansible
/usr/lib/python2.7/site-packages/ansible
[vagrant@localhost ~]$ ls /usr/lib/python2.7/site-packages/ansible
__init__.py config executor modules plugins utils
__init__.pyc constants.py galaxy new_inventory release.py vars
cli constants.pyc inventory parsing release.pyc
compat errors module_utils playbook template

あ、ansibleコマンドだとどうなんだろう。
telnetは問題なく入ったような。

<ansibleを入れたhostにsshログインして>
$ ansible -i hosts 192.168.33.12 -m yum -s -a name=httpd

入った。
ちなみに確認は下記。
$ sudo systemctl list-unit-files | grep httpd


-sか-aが効いてるのか?
sはsudo, aは引数のようだ。

んーよく分からん。-yオプションがよく分からないが、
ログが全然出てこないのを見るともっと根が深いような。

■2016年10月2日
●ansible
simple-playbook.ymlで
vagrantでansibleプロビジョニングの試行

sshの鍵のコピー必要
⇒shでやろうとしたらできてなかった。
Winコマのstartみたいなのが要るのか?

/vagrant/$ANSIBLE_HOST
が成功しない。。

■2016年10月1日
●ansible
プロビジョニングスクリプトの.sh、
実行されるパスはおかしいけど、内容は同じようだ。
C:\Users\Hoge\AppData\Local\Temp
に一回コピーしてハッシュでもつけてリネームしてるっぽい

まあでもそもそもansible関連のファイル(site.ymlとか)をちゃんと書かないと
あんまり意味がない感じがする

と、いうことで、

自作centos7のboxで下記を再現トライアル
http://yteraoka.github.io/ansible-tutorial/

[vagrant@localhost ~]$ which python
/usr/bin/python

http://yteraoka.github.io/ansible-tutorial/

ansible疎通確認でpingが到達しない
[vagrant@localhost ~]$ ansible -i hosts 192.168.33.12 -m ping
The authenticity of host '192.168.33.12 (192.168.33.12)' can't be established.
ECDSA key fingerprint is 78:5e:5f:d8:9a:bc:21:45:f4:39:77:85:46:aa:fd:e0.
Are you sure you want to continue connecting (yes/no)? yes
192.168.33.12 | UNREACHABLE! => {
"changed": false,
"msg": "Failed to connect to the host via ssh.",
"unreachable": true
}

ECDSA? ⇒ あんまり関係なかったっぽい

$ scp -F ssh_config .vagrant/machines/node2/virtualbox/private_key node1:.ssh/id_rsa
⇒node1の/home/vagrant
.sshがある

http://qiita.com/ayihis@github/items/748bba777f1cac405435

先に、
https://orebibou.com/2015/01/%E3%82%BF%E3%83%BC%E3%83%9F%E3%83%8A%E3%83%AB%E3%81%8B%E3%82%89%E3%83%91%E3%82%B9%E3%83%AF%E3%83%BC%E3%83%89%E5%85%A5%E5%8A%9B%E7%84%A1%E3%81%97%E3%81%A7ssh%E6%8E%A5%E7%B6%9A%E3%81%99%E3%82%8B3/
/etc/ssh/sshd_config の
AuthorizedKeysFileの設定をコメントアウト

ansible疎通確認OK
'uname -a'を送る
[vagrant@localhost ~]$ ansible -i hosts 192.168.33.12 -a 'uname -r'
192.168.33.12 | SUCCESS | rc=0 >>
3.10.0-327.36.1.el7.x86_64

2016/9/24にboxを作ったときの
>0.5.3-1ってなんなんやろ。
これか。

■2016年9月25日 その2
●ansible
vagrant upしたらtarget2のnodeが今度は立ち上がったけど
Ansible playbookがねえよ。と言われる。
やはり事前に仕込みが必要ではあったのだな。

導入時の情報を見返したりしてると
Vagrantfileと同じフォルダに.ymlとかhostファイルとか
配置していた。一回作ったやつなのでコピーして、
再度vagrant up

今度はもうprovisionされてるしー。みたいなログが。
ログに従ってない感はあるけれど、
Vagrantfileを変更。コメントアウトされてた
|sh|型のprovision指定に変えてみる。
やっぱダメ。upもprovisionもダメ。
走ってほしい.shが走らない。
適当にいじって、これまでにないパターンになった(笑)
upはこれまで通りでダメだったけど、
provisionしたらmake-playbookにansibleがインストールされたっぽい。
sshで入って確認したらwgetも入ってなかった。
入れちゃったけど、.shのインストール部分の頭にも追加してもう一回。

ログを見てるとvagrant upのあとvagrant provisionじゃなくて
vagrant up --provisionでもいいのかな?

get-pip.pyの取得に失敗。
なんやこれ?何でこんなにつまづくん?って思ったけど
前回はgit-bashでやって、今回はWindowsコマンドプロンプトから
vagrant操作してるからかも。まあそれはそれで望むところなようなそうでもないような。
Win環境からーっぽくはしたいなあ。

get-pip.pyもsshログインしたまんま、
エラーに合わせてhttps://をパスから取り除いて取得してしまったが、
.shのインストール部分も変更してもう一回。
というかvagrant up --provision
.shは想定通りに叩いてくれたっぽいけど何かログが短い。
pip入ってない。。
作業ディレクトリが違うのか?
このままsshログインして進めるともはや環境構築が自動化されないので
一旦git-bashからやる方向に変えてみる。

それでもダメ。挙動もあまり変わらない。
Vagrantfileを戻した方がええんやろか。
pipが入ってない。
Vagrantfileを最新のうまくいっていたと思われる状態に戻して。
vagrant up --provision
うん。ダメだ。ansible入ってたから動いてたんだねー。

うーん。でもansibleがすでに入っていたから動いていたくさい設定だなあ。
確認はdestroyせんとですね。
しかしhaltとupの繰り返しでさえ気が遠くなってくる。
(よく考えたら全然関係ないnodeを作る構成になっていた。。
 い、いや、漏れのないテスト項目をだねqあwせdrftgyふじこlp
 めんどいから我慢できる限りいいや。と思ったけどVagrantfile数行なので
 とりあえずコメントアウトしよう。)

いやー環境構築を楽にするのも楽じゃないもんだ。
と思ったけど物理サーバーとかネットワーク配線するのよりは
よっぽどマシなんだろうなー。

デバッグしながら配置していたhostsファイルの名前が間違っていたことに気付く(host)。
わーお。確かに空ファイルだけども。

あまり動きが変わらないのでWinコマに戻ることにする。
はら?変な.shが叩かれおる。
haltしてもうたけどそのままgit-bashでやったらどうなったんやろ。

やはり変なシェルが叩かれる。haltせずに記述を変えてprovisionしてもダメ。
ここで、想定していた.shが全く叩かれていなかったことに気付く。
これがいわゆるオーマイガッというやつだ。

一つ目のansibleは手動で入れるのか?
何だか何がなんだか分からなくなってきたぜ。フヘヘ。
前うまくいっていたと思っていたやつをvagrant upしたら
.shとは関係なさげなものがドカドカinstallされていただけだったようだ。

ははは

vagrant destroyに心がこもる。

さて、現実に戻ろう。


とりあえずフルパスでシェルのパスを指定してみればいいだろうか

■2016年9月25日
http://te2u.hatenablog.jp/entry/2015/05/11/012225
sshの設定
からレジューム作業

gitは
# yum list git
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
* base: www.ftp.ne.jp
* extras: www.ftp.ne.jp
* updates: www.ftp.ne.jp
インストール済みパッケージ
git.x86_64 1.8.3.1-6.el7_2.1 @updates

# yum update git
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
* base: www.ftp.ne.jp
* extras: www.ftp.ne.jp
* updates: www.ftp.ne.jp
No packages marked for update

ということでいいや。

iptable関連で動いてるサービスが見当たらない。
のでスルー。
# systemctl list-unit-files | grep tables
# systemctl list-unit-files | grep ip
iprdump.service disabled
iprinit.service disabled
iprupdate.service disabled
iprutils.target disabled

Guest Additions CD imageの取り出しも分からなかったのでスルー

udevのルールの削除もそれっぽいファイルが無さそうなのでスルー

$ vagrant -v
Vagrant 1.8.4

$ VBoxManage.exe -v
5.0.22r108108

●ansible
別のboxで作った
Vagrantfileと
provision.sh
ではansibleからprovisionしたいnodeのtarget2のVMの作成うまくいかなかった。
ansibleが入っているはずのVMでansibleを叩いても
見つからなかったのでansibleは前もってinstallしないといけないのかもしれない

ログは下記。
>vagrant up
Bringing machine 'make-playbook' up with 'virtualbox' provider...
Bringing machine 'target' up with 'virtualbox' provider...
Bringing machine 'target2' up with 'virtualbox' provider...
==> make-playbook: Importing base box 'CentOS-7-x86_64-Minimal-1511'...
==> make-playbook: Matching MAC address for NAT networking...
==> make-playbook: Setting the name of the VM: mycentos7_make-playbook_1474778008372_19837
==> make-playbook: Clearing any previously set network interfaces...
==> make-playbook: Preparing network interfaces based on configuration...
make-playbook: Adapter 1: nat
make-playbook: Adapter 2: hostonly
make-playbook: Adapter 3: hostonly
make-playbook: Adapter 4: intnet
==> make-playbook: Forwarding ports...
make-playbook: 22 (guest) => 2001 (host) (adapter 1)
make-playbook: 80 (guest) => 65534 (host) (adapter 1)
==> make-playbook: Booting VM...
==> make-playbook: Waiting for machine to boot. This may take a few minutes...
make-playbook: SSH address: 127.0.0.1:2001
make-playbook: SSH username: vagrant
make-playbook: SSH auth method: private key
make-playbook: Warning: Remote connection disconnect. Retrying...
make-playbook: Warning: Remote connection disconnect. Retrying...
make-playbook: Warning: Remote connection disconnect. Retrying...
make-playbook: Warning: Remote connection disconnect. Retrying...
make-playbook:
make-playbook: Vagrant insecure key detected. Vagrant will automatically replace
make-playbook: this with a newly generated keypair for better security.
make-playbook:
make-playbook: Inserting generated public key within guest...
make-playbook: Removing insecure key from the guest if it's present...
make-playbook: Key inserted! Disconnecting and reconnecting using new SSH key...
==> make-playbook: Machine booted and ready!
[make-playbook] GuestAdditions 5.0.22 running --- OK.
==> make-playbook: Checking for guest additions in VM...
==> make-playbook: Configuring and enabling network interfaces...
==> make-playbook: Mounting shared folders...
make-playbook: /vagrant => C:/Users/Sode/DevEnv/vagrant/mycentos7
==> target: Importing base box 'CentOS-7-x86_64-Minimal-1511'...
==> target: Matching MAC address for NAT networking...
==> target: Setting the name of the VM: mycentos7_target_1474778120127_88347
==> target: Clearing any previously set network interfaces...
==> target: Preparing network interfaces based on configuration...
target: Adapter 1: nat
target: Adapter 2: hostonly
==> target: Forwarding ports...
target: 22 (guest) => 2002 (host) (adapter 1)
==> target: Booting VM...
==> target: Waiting for machine to boot. This may take a few minutes...
target: SSH address: 127.0.0.1:2002
target: SSH username: vagrant
target: SSH auth method: private key
target: Warning: Remote connection disconnect. Retrying...
target: Warning: Remote connection disconnect. Retrying...
target: Warning: Remote connection disconnect. Retrying...
target:
target: Vagrant insecure key detected. Vagrant will automatically replace
target: this with a newly generated keypair for better security.
target:
target: Inserting generated public key within guest...
target: Removing insecure key from the guest if it's present...
target: Key inserted! Disconnecting and reconnecting using new SSH key...
==> target: Machine booted and ready!
[target] GuestAdditions 5.0.22 running --- OK.
==> target: Checking for guest additions in VM...
==> target: Setting hostname...
The following SSH command responded with a non-zero exit status.
Vagrant assumes that this means the command failed!

# Update sysconfig
sed -i 's/\(HOSTNAME=\).*/\1target/' /etc/sysconfig/network

# Update DNS
sed -i 's/\(DHCP_HOSTNAME=\).*/\1"target"/' /etc/sysconfig/network-scripts/ifcfg-*

# Set the hostname - use hostnamectl if available
echo 'target' > /etc/hostname
if command -v hostnamectl; then
hostnamectl set-hostname 'target'
else
hostname 'target'
fi

# Remove comments and blank lines from /etc/hosts
sed -i'' -e 's/#.*$//' -e '/^$/d' /etc/hosts

# Prepend ourselves to /etc/hosts
grep -w 'target' /etc/hosts || {
sed -i'' '1i 127.0.0.1\ttarget\ttarget' /etc/hosts
}

# Restart network
service network restart


Stdout from the command:

/bin/hostnamectl
Restarting network (via systemctl): [失敗]


Stderr from the command:

Job for network.service failed because the control process exited with error code. See "systemctl status network.service" and "journalctl -xe" for details.


■2016年9月24日
自分でboxを作成して会社でも使いたい
仮想マシンの名前はcentos7min64とする

ネットワークのコマンドが色々変わっていて
http://te2u.hatenablog.jp/entry/2015/05/11/012225
natのeh0の有効化だけで困る

http://qiita.com/yokomotod/items/e69d3cc69a1e16704089
伏字で困る

ここでhidekuroさんがお勧めしてたboxを安易にとってまねることにしようと思う
http://qiita.com/yokomotod/items/e69d3cc69a1e16704089
$ vagrant box add https://atlas.hashicorp.com/puppetlabs/boxes/centos-7.2-64-nocm
$ vagrant init
# config.vm.box = "base"
config.vm.box = "puppetlabs/centos-7.2-64-nocm"
vagrant up
成功
vagrant sshでユーザーが勝手にvagrantになるのはどの設定なのだろう。
ifconfigもipも動くけどnatどれなんやろう。
loはlocalhostっぽいから
多分enp0s3なんだろうなー。
VirtualBoxの設定だとnatのアダプタしかないし。

しかし問題はsshログインできるかどうかだろう。
ということでmntui
 全部Automaticやん。。
 /etc/sysconfig/network-scripts/
 のファイルで設定してるっぽい。
 コピーするか(笑)
私は情弱の外道ですよおおおおおお
$ cp /etc/sysconfig/network-scripts/ifcfg-* /vagrant/
中身見たけど分かんねえや

vagrant up
を他に2つ追加したからなおさら不利になっている感がある。

eh0の代わりに存在感を放っている
/etc/sysconfig/network-scripts/ifcfg-enp0s3
が存在していたので
ON_BOOT=yesに変更

$ ssh localhost -p 2222 -l root
成功。YES!

よく分からないけど書いてる通りにRPMFORGEを追加。
el7にはする。迷惑にならないといいなあ。
0.5.3-1ってなんなんやろ。

yum installでパッケージが利用できないと言われる。
ほーう。
el6でもダメ。
ググったサイトで下記もダメっぽい
# rpm -ivh http://apt.sw.be/redhat/el7/en/x86_64/rpmforge/RPMS/rpmforge-release-0.5.3-1.el7.rf.x86_64.rpm

うん。飛ばそう。