LoginSignup
2
2

More than 5 years have passed since last update.

AnsibleつかってGitをインストールさせるだけなのに2日使った

Last updated at Posted at 2018-04-09

やりたかったこと

Gitの勉強をしたかったのでAnsibleを使って対象のサーバ(10.0.0.2)にGitをインストールさせる。
おまけでntpも一緒にインストールさせる。

環境:
centos7
ansible 2.5

やたらつまずきました。

結論から言うと「yum」するときにはsuでなくてはできないよね。
※初歩の初歩過ぎて探してもあまり出てこなかったです、、
そこにたどり着いてからやたら時間がかかりました。。
対象サーバ側でのsudo許可をしていなかったり。
becomeの書き方間違ってたり、、、

なんやかんやあって結果できました、
求めてた結果がこちら

[snamon@localhost ansible]$ ansible-playbook -i hosts main.yml

PLAY [sv] ***********************************************************************************************************

TASK [ping] *********************************************************************************************************
ok: [10.0.0.2]

TASK [install_git] **************************************************************************************************
changed: [10.0.0.2]

TASK [debug] ********************************************************************************************************
ok: [10.0.0.2] => {
    "msg": {
        "changed": true,
        "failed": false,
        "msg": "",
        "rc": 0,
        "results": [
            "Loaded plugins: fastestmirror\nLoading mirror speeds from cached hostfile\n * base: ftp.nara.wide.ad.jp\n * extras: ftp.nara.wide.ad.jp\n * updates: ftp.jaist.ac.jp\nResolving Dependencies\n--> Running transaction check\n---> Package git.x86_64 0:1.8.3.1-12.el7_4 will be installed\n--> Processing Dependency: perl-Git = 1.8.3.1-12.el7_4 for package: git-1.8.3.1-12.el7_4.x86_64\n--> Processing Dependency: perl(Git) for package: git-1.8.3.1-12.el7_4.x86_64\n---> Package ntp.x86_64 0:4.2.6p5-25.el7.centos.2 will be installed\n--> Running transaction check\n---> Package perl-Git.noarch 0:1.8.3.1-12.el7_4 will be installed\n--> Finished Dependency Resolution\n\nDependencies Resolved\n\n================================================================================\n Package        Arch         Version                        Repository     Size\n================================================================================\nInstalling:\n git            x86_64       1.8.3.1-12.el7_4               updates       4.4 M\n ntp            x86_64       4.2.6p5-25.el7.centos.2        base          547 k\nInstalling for dependencies:\n perl-Git       noarch       1.8.3.1-12.el7_4               updates        53 k\n\nTransaction Summary\n================================================================================\nInstall  2 Packages (+1 Dependent package)\n\nTotal download size: 5.0 M\nInstalled size: 24 M\nDownloading packages:\n--------------------------------------------------------------------------------\nTotal                                              109 kB/s | 5.0 MB  00:46     \nRunning transaction check\nRunning transaction test\nTransaction test succeeded\nRunning transaction\n  Installing : perl-Git-1.8.3.1-12.el7_4.noarch                             1/3 \n  Installing : git-1.8.3.1-12.el7_4.x86_64                                  2/3 \n  Installing : ntp-4.2.6p5-25.el7.centos.2.x86_64                           3/3 \n  Verifying  : git-1.8.3.1-12.el7_4.x86_64                                  1/3 \n  Verifying  : ntp-4.2.6p5-25.el7.centos.2.x86_64                           2/3 \n  Verifying  : perl-Git-1.8.3.1-12.el7_4.noarch                             3/3 \n\nInstalled:\n  git.x86_64 0:1.8.3.1-12.el7_4       ntp.x86_64 0:4.2.6p5-25.el7.centos.2      \n\nDependency Installed:\n  perl-Git.noarch 0:1.8.3.1-12.el7_4                                            \n\nComplete!\n"
        ]
    }
}

PLAY RECAP **********************************************************************************************************
10.0.0.2                   : ok=3    changed=1    unreachable=0    failed=0

[snamon@localhost ansible]$

inventry

hosts
[sv]
10.0.0.2

[sv:vars]
ansible_user=test
ansible_password=passwd

Playbook

main.yml
---
- hosts: sv
  gather_facts: no

  tasks:
   - name: ping
     ping:

   - name: install_git
     become: true
     yum:
      name:
       - git
       - ntp
      state: latest
     register: result

   - name: debug
     debug:
       msg: "{{ result }}"

そんななか遭遇したなぞの事象

失敗が続いていたのでとりあえずPingは行くのかな?と思い
こんなinventoryファイルを用意
※sshで10.0.0.2に接続はできていたのでやったのはほんの出来心でした。

hosts
[sv]
10.0.0.2
10.0.0.3  ←存在しないIP!!!!
10.0.0.4  ←こいつも存在しない!
main.yml
---
- hosts: sv
  connection: local
  gather_facts: no

  tasks:
   - name: ping
     ping:

実行結果

[snamon@localhost ansible]$ ansible-playbook -i hosts ping.yml

PLAY [sv] ***********************************************************************************************************

TASK [ping] *********************************************************************************************************
ok: [10.0.0.2]
ok: [10.0.0.3]
ok: [10.0.0.4]

PLAY RECAP **********************************************************************************************************
10.0.0.2                   : ok=1    changed=0    unreachable=0    failed=0
10.0.0.3                   : ok=1    changed=0    unreachable=0    failed=0
10.0.0.4                   : ok=1    changed=0    unreachable=0    failed=0

[snamon@localhost ansible]$

ふぁふぁふぁのふぁっ?
届いてるみたいな表示しておりませんか?
念の為、普通にpingを叩いてみる

[snamon@localhost ansible]$ ping 10.0.0.2
PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.
64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=0.764 ms
64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=0.652 ms
64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=0.655 ms
64 bytes from 10.0.0.2: icmp_seq=4 ttl=64 time=0.797 ms
^C
--- 10.0.0.2 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 0.652/0.717/0.797/0.064 ms
[snamon@localhost ansible]$ ping 10.0.0.3
PING 10.0.0.3 (10.0.0.3) 56(84) bytes of data.
From 10.0.0.1 icmp_seq=1 Destination Host Unreachable
From 10.0.0.1 icmp_seq=2 Destination Host Unreachable
From 10.0.0.1 icmp_seq=3 Destination Host Unreachable
From 10.0.0.1 icmp_seq=4 Destination Host Unreachable
^C
--- 10.0.0.3 ping statistics ---
7 packets transmitted, 0 received, +4 errors, 100% packet loss, time 6003ms
pipe 4
[snamon@localhost ansible]$ ping 10.0.0.4
PING 10.0.0.4 (10.0.0.4) 56(84) bytes of data.
From 10.0.0.1 icmp_seq=1 Destination Host Unreachable
From 10.0.0.1 icmp_seq=2 Destination Host Unreachable
From 10.0.0.1 icmp_seq=3 Destination Host Unreachable
From 10.0.0.1 icmp_seq=4 Destination Host Unreachable
^C
--- 10.0.0.4 ping statistics ---
4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 3001ms
pipe 4
[snamon@localhost ansible]$

飛ばない!(そりゃそうだ!)
怪しいのはconnectionをlocal指定しているところ
にしても存在しないIPへPingはとばないでしょ。。。なんだこれ。。。

<4月10日 追記>
ansible-playbook するときに -vvvvvのオプションつけて調査した結果、
やはりconnection: localが悪いと発見
※というより仕様を理解していなかった自分が悪い。。。

さらにPingモジュールは、実際にPingを打っているのではなく、
SSHでログイン後にbashで「 /bin/sh -c 'echo ~ && sleep 0'」を打ち応答があるかを確認しているようでした、、
つまり、connection: localを指定しているため、自分自身に入ってコマンドたたいて、応答あった!OK!
って動きみたい、、、

まとめ

謎事象は引き続き調査したいと思います!
とりあえず基本的な動きができたのでよしとしたいでっす!
それにしても苦戦した笑
サーバの勉強しないとだめだこりゃと思いました。。

本当は認証情報(sshのユーザ/パスワード)は変数ファイル(var)としてまとめて管理したかったのですが、、それはまた次回!!

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2