下記のような構成の時、最初に`root`ユーザーで、`deploy`ユーザを追加して、rootでのログインを禁止にした場合、どうやって冪等性を保つのがいいのでしょうか？  
`ansible-playbook -i staging
site.yml`みたいなコマンドの1回目は問題なく動作しますが、2回目はrootでログインできないので、エラーが発生します。この場合、色々なやり方（ファイルを分けるや、`--limit`するなど）があると思いますが、どうやるのが良いやり方なんでしょうか？

```

    - hosts: webservers
      remote_user: root
      port: 22
      roles:
        - something1
    
    - hosts: webservers
      remote_user: deploy
      port: 10022
      roles:
        - something2
    
```
CC BY-SA 3.0
2016-06-11T11:19:37.643
26658
2017-02-23T14:00:39.197
9860
question
ansible
Ansibleでrootをdisableにした後に、playbookを再実行するとエラーが発生する場合の対処法
playbook は、基本的に deploy ユーザーにしておいて、最初だけ root ユーザーで実行させるのが良い気がします。

```

    ---
    - hosts: webservers
      remote_user: deploy
      become: yes
      port: 10022
      tags: ['init']
      roles:
      - useradd_deploy
      - disable_root_user
      - sshd
    
    - hosts: webservers
      remote_user: deploy
      port: 10022
      roles:
      - something2
    
```

１回目は、root で、port を 22 で init タグのみ実行

```

    $ ansible-playbook -i hosts site.yml --tags init -e ansible_ssh_user=root -e ansible_ssh_port=22
    
```

２回目以降は、playbook のまま

```

    $ ansible-playbook -i hosts site.yml
    
```

２回目以降も、init タグの play が実行されますが、冪等性が確保されてれば問題なしかと。  
ただ、deploy ユーザーは、init の play の中で、sudoers の設定が必要…

(init の順番とか間違うと、だれもリモートからログインできなくなりそう)
CC BY-SA 3.0
2017-02-23T13:54:09.847
32905
2017-02-23T14:00:39.197
2017-02-23T14:00:39.197
4419
4419
26658
answer