ansibleでは become: yes とかけばsudoでコマンド実行ができますが、そのためにはユーザーにsudo権限がついていないといけません。
今回Vagrantで構築したUbuntuに対して、vagrant以外のユーザーでAnsibleを叩きたいと思います。
環境
Vagrant 1.9.7
Ubuntu 14.04
(vm: "ubuntu/trusty64")
ansible 2.3.1.0
sudo権限を付ける
ubuntu という名前のユーザーを作り、sudo権限を付けます。
まずログイン
$ vagrant ssh
ここからはubuntu内の操作です。
ubuntuという名前のユーザーがいないなら作っておきます。
$ adduser ubuntu
適当なパスワードを入力してあとはEnter。
ubuntuでエディタをviにします。やらなくてもいいですがnanoが使いにくかったので。
$ sudo update-alternatives --config editor
選択肢がでますが、3を入力します。
ubuntuにsudo権限を付けます。
$ sudo visudo
末尾に以下を追加。
ubuntu ALL=(ALL) NOPASSWD: ALL
これで、su ubuntu
でubuntuになり、sudo ls
などが実行できるか確認します。
だいたいこれでOKです。
あとは、1. ansibleのプレイブックでユーザーを指定するか、2. hostsファイルにユーザーをかけばOKです。
- プレイブック内に、user:でubuntuを指定します。
- hosts: dev
user: ubuntu
become: yes
tasks:
- name: whoami
command: whoami
- hostsファイルにansible_ssh_userで指定します。
[web]
192.168.33.10 ansible_ssh_user=ubuntu