2016-04-16 5 views
0

非常に新鮮なUbuntuサーバにAnsibleをプロビジョニングする必要があります。最初はrootユーザーと生成されたパスワードしかありません。私がする必要がある最初のアクションは、serviceユーザーを作成し、パスワードを設定し、オプションで自分のローカルユーザーのキーをアップロードして(パスワードなしでログインできるように)、rootログインを無効にすることです。次に、serviceユーザーとして役割を実行する必要があります。 1つのプレイブックでどうすればいいですか(例:ansible-playbook init.yml && ansible-playbook apply_roles.ymlの代わりにansible-playbook provision.ymlのsignle)?問題は、私がserviceを作成した後にユーザーをどこかに切り替えてからログインする必要があるということです。サーバを完全に準備すること

このホストのansible_userserviceと設定し、最初の設定で一度だけオーバーライドすることをお勧めしますか(root)?ベストプラクティス?

答えて

1

、Ubuntuのインスタンスが生成され、rootユーザーとローカルユーザーで始まりwith access to sudo

(そのコマンドを使用すると、ansibleを実行し、コマンドラインから利用可能な場合)

ssh-copy-id <server> 

私はこれまで最もクリーンなアプローチを経て、最初のbashスクリプトを経由してそのローカルユーザーのキーをインストールすることだと思います

とし、bashスクリプトでその行の後にAnsibleスクリプトを実行してください。

(私はそれがansible vaultで、ローカルユーザーのcredsをを格納することも可能だと思うけど..私はまだVaultを使用していないので、私はそれにあまりなじみのよ。)

私は考えあなたが言ったように、キックオフファイル(become_userのような)かインベントリの中のあるユーザーのどちらかを使ってサービスユーザを指定してください。 (しかし、あなたはthis older issueに応じたことをやって問題に遭遇することがあります。)

私は、ユーザーを指定するには、キックオフのファイルを使用した場合は、そのファイルが役割を持っているでしょう(のは、Webサーバーとしましょう)、およびその役割うdependencyがあります(共通としましょう)。

一般的な役割では、サービスユーザー(これはignore errorsに設定されています)を使用して既知の結果を持つコマンドを試行するタスクがあります。そのタスクが期待どおりの結果を返さなかった場合は、サービスユーザーを作成し、そのサービスユーザーのキーをサーバーにコピーします。関係する各タスクは、ローカルユーザに対してbecome_userを上書きする必要があります。

この役割の依存関係が実行された後、主な役割が続き、残りのすべてのタスクはサービスユーザーとして実行されます。

1

1つのプレイブックに複数の再生を設定できます。あなたは、ルート、サービスとして実行する必要があります役割のための別の一つとして実行したいタスクのための演劇を作成します。メモリが提供している場合

- hosts: all 
    remote_user: root 
    tasks: 
    # your tasks here 

- hosts: all 
    remote_user: service 
    roles: 
    - your_role