LoginSignup
0
3

More than 5 years have passed since last update.

AnsibleをUbuntuで初めて使ってつまづいた点をまとめた

Posted at

AnsibleをUbuntuで初めて使ってつまづいた点をまとめた

UbuntuでAnsibleを使ってプロビジョニングをやってみたくなったので、初めて触った人のつまづいた点をまとめておきます。

環境

OS: Ubuntu 14.04
Vagrant box: ubuntu/trusty64

つまづいた点

  1. SSHで接続できない
  2. root権限なくてパッケージインストールできない

SSHで接続できない

VagrantでAnsibleのテストをしているので、普通にRLoginとかでSSHで接続できる(秘密鍵無しでと思い込んで)のに、Permission deniedが出てきてました。

これは自分は何度も経験しているので、何度か試行錯誤しているうちに、サーバ側(AnsibleのPlaybookによってプロビジョニングされるマシン)に公開鍵を登録しておかないと行けないんだと気が付きました。

早速ssh-keygenで仮の秘密鍵と公開鍵を作成。サーバ側に登録。

ansible -m ping all
を打って秘密鍵のパスワード打って無事pingの結果pongが返ってくる。

よって、AnsibleではSSH接続をしてプロビジョニングを行うため、サーバ側に公開鍵を事前に登録しておく必要があることがわかりました。

root権限なくてパッケージインストールできない

SSH接続できて、次の壁にぶつかります。「パッケージがインストールできない」

ネットをいろいろ波乗りしていると、みなAnsibleとかChefとかでもCentOSでプロビジョニングを説明するので、Ubuntuで説明しているページが少ないです。

これって、あまりサーバとしてUbuntuが人気じゃないんでしょうか? 個人的には、Ubuntu大好きなんですけどね。

CentOS用のPlaybookの中にremote_user: rootという記述があります。

ですが、Ubuntuにはrootというユーザは実在しないはずです。

だから上のコードで実行すると「お前はrootじゃね」とdpkgとかのコマンドを実行しようとするときに怒られます。

困った、CentOSにできて、Ubuntuにできないわけがない。

sudoコマンドは権限昇格(Privilege Escalation)をするためのコマンドであるという定義をすっ飛ばしていたので、いい勉強になりました。

よって、Ubuntuに実在するユーザで権限昇格をしてパッケージをインストールすればいいので、become: trueremote_user: rootの代わりに入力します。

これで、Playbookを実行するコマンドを走らせて。。。完了!

実際に試してみたPlaybookです

setup.yml
---

- hosts: host1
  become: true
  tasks:
    - name: install nginx
      apt:
        name: nginx
        state: present
      notify: restart nginx

  handlers:
    - name: restart nginx
      service: name=nginx state=restarted

あと気になる点

YAMLでPlaybookを記述するんですが、どうやらまだ理解していない模様なので、しっかり復習したいと思います!

参考文献

0
3
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
0
3