私の質問は簡単に思えますが、より複雑になります。
基本的に、サーバーを手動で保守するのは本当にうんざりしました(バックグラウンドで叫ぶ)そして、サーバー管理者をより住みやすいものにする方法を見つける時だと判断しました。そのとき、私はAnsibleを見つけました。いいね? bashスクリプトを作成する確かなビート(louder scream)私が自動化したかったすべてのものについて。
Ansibleプレイブックが特定の処理を実行するユーザーを特定するのに多くの問題を抱えています。また、特定のタスクを実行するユーザーを指定する機能も必要です。特定の使用例は次のとおりです。
私の目的は、node-js webappを別のユーザーから実行することです。このユーザーは、bill(これは、Sudoを使用して、ノードサーバーを起動するスクリプトを実行するためにのみ使用できます)すべてのコマンドにSudoを使用できるrootまたはユーザーに)。これを行うには、Ansibleのgitモジュールにgitリポジトリをbillとしてクローンさせる機能が必要です。どうすればいいですか?
私が理解している限り、「ユーザー」とプレイブックファイルの先頭を定義することで、Ansibleが管理しているサーバーに接続するユーザーを設定できます。わからないことがあります。ユーザー名joeで接続するように指示し、aptモジュールでパッケージを更新するように要求した場合、どのようにルートを取得しますか。通常、sudoはパスワードの入力を求めるプロンプトを表示するので、そのようにしておくことをお勧めします(セキュリティのため)。
私はAnsibleのドキュメントを精査し、グーグルでいくつかの(徹底的だと思っていた)を行い、一般的には自分でそれを理解しようとしましたが、この情報は私を逃れ続けています。
私はAnsibleを初めて使用しますが、ほとんど単純明快ですが、Ansibleの実行方法、実行するユーザー、および異なるユーザーが使用するユーザーを指定する方法/場所を正確に理解できれば、非常に有益です。
事前にありがとう
AnsibleのドキュメントサイトのHosts and Usersセクションを読むと便利な場合があります。
http://docs.ansible.com/playbooks_intro.html#hosts-and-users
要約すると、ansibleは、remote_user
変数で指定されたユーザーとしてプレイブック内のすべてのコマンドを実行します(ansible> = 1.4、user
を使用している場合)。タスクを特定のユーザーとして実行する必要がある場合、タスクごとにこの変数を指定することもできます。
プレイブック/タスクでSudo: true
を使用して、Sudo
を使用して実行します。 root
を使用したくない場合は、Sudo_user
変数を使用して、Sudoのユーザーを指定します。
実際には、Sudo特権を持つdeploy
ユーザーとしてプレイブックを実行するのが最も簡単であることがわかりました。パスワードを使用せずにdeploy
として任意のホストにSSHできるようにSSHキーを設定します。これは、パスワードを使用せずにプレイブックを実行でき、必要に応じてSudo
を使用できることを意味します。
この同じユーザーを使用して、gitリポジトリのクローン作成やサービスの開始/停止などを行います。サービスをより低い特権のユーザーとして実行する必要がある場合は、initスクリプトにそれを任せます。 node.js init.dスクリプトをGoogleで簡単に検索すると、CentOSの次のコードが明らかになりました。
https://Gist.github.com/nariyu/121141
このように物事を行うと、シンプルに保つのに役立ちます。
お役に立てば幸いです。
私の2セント:
~/.ansible.cfg
ローカルマシン上。playbooks を使用して、異なる状況と異なるユーザーまたはSudoを指定できます。
プレイブックでは、選択したインベントリに属する各マシンで実行されるロールを定義します。
インフラストラクチャのセットアップ方法に関する説明については、 Ansible best practice を読むことをお勧めします。
Ansibleが使用する特定のモジュールを参照しておらず、あなたの質問がpythonに関連していないため、pythonタグを持つ質問の使用は見つかりません。
Ansible> = 1.9では特権エスカレーションコマンドが使用されるため、必要に応じてタスクを実行し、セカンダリユーザーとしてリソースを作成できます。
- name: Install software
Shell: "curl -s get.dangerous_software.install | Sudo bash"
become_user: root
http://docs.ansible.com/ansible/become.html#become-privilege-escalation