2016-05-19 2 views
24

私はUbuntu 14.04サーバーを引き継いだ。それには "deployer"(capistranoと一緒に使用される)と呼ばれるユーザーがいて、sudo権限が必要です。この設定で、私は、サーバーにログインすることができますし、同じようなものを行う:私は「デプロイヤというユーザーを作成するためにAnsible(バージョン2.0.2.0とPython 2.7.3)を使用する方法を把握しようとしています私はUbuntu 14.04サーバーを引き継いだ。sudo権限を持つユーザーを作成する。

workstation> ssh [email protected] 
myserver> sudo apt-get install git 
myserver> exit 
workstation> 

"そのIDでサーバにログインし、" sudo-ish "のようなものを" apt-get install "のようにすることができます。私の脚本は、次のようになります。

--- 
- hosts: example 
    become: yes 
    tasks: 
    - name: Update apt cache 
    apt: 
     update_cache: yes 
     cache_valid_time: 3600 

    - group: name=sudo state=present 

    - name: Add deployer user and add it to sudo 
    user: name=deployer 
      state=present 
      createhome=yes 
    become: yes 
    become_method: "sudo" 

    - name: Set up authorized keys for the deployer user 
    authorized_key: user=deployer key="{{item}}" 
    with_file: 
     - /home/jaygodse/.ssh/id_rsa.pub 

この脚本を実行した後、私は「配備担当者」としてマシンにsshをすることができています、(MYSERVER @例えばSSHの配備担当)が、私はsudoコマンドを実行した場合、それはいつも私に尋ねます私のsudoのパスワードです。

"展開者"のユーザーは最終的にvisudoユーザーファイルにアクセスする必要があることを理解していますが、起動する魔法の魔法の呪文を見つけることができないため、

私は高低を検索しましたが、ユーザーの "デプロイヤー"を入れるAnsibleプレイブックの断片を見つけることができないようです(例:sudo apt-get install git)。パスワードを忘れることなくsudoグループにアクセスするにはどうすればいいですか?

答えて

52

何か尋ねることを知っていることがあります。私はDevOpsの仕事をしている開発者だとわかりません。

「パスワードなし」またはNOPASSWDログインは、/ etc/sudoersファイルに入れなければならないものです。

私の質問に対する答えはAnsible: best practice for maintaining list of sudoersです。

Ansible脚本コードフラグメントは、私の問題から、次のようになります

- name: Make sure we have a 'wheel' group 
    group: 
    name: wheel 
    state: present 

- name: Allow 'wheel' group to have passwordless sudo 
    lineinfile: 
    dest: /etc/sudoers 
    state: present 
    regexp: '^%wheel' 
    line: '%wheel ALL=(ALL) NOPASSWD: ALL' 
    validate: 'visudo -cf %s' 

- name: Add sudoers users to wheel group 
    user: name=deployer groups=wheel append=yes state=present createhome=yes 


- name: Set up authorized keys for the deployer user 
    authorized_key: user=deployer key="{{item}}" 
    with_file: 
    - /home/railsdev/.ssh/id_rsa.pub 

そして最良の部分は解決策が冪等であるということです。プレイバックが後で実行されるときに、

%wheel ALL=(ALL) NOPASSWD: ALL 

を/ etc/sudoersに追加しません。そして、はい...私はサーバーに "デプロイヤー"としてsshを実行し、パスワードを与えることなくsudoコマンドを実行することができました。

+33

'lineinfile:'セクションの最後に 'validate: 'visudo -cf%s''行を追加して、保存前に検証してください。 sudoersファイルを壊すと、sudoのアクセスが恒久的にロックされます。 –

+1

'authorized_key' [キーを文字列として受け入れる](http://docs.ansible.com/ansible/latest/authorized_key_module.html)v1.9以降、' key'パラメータで – Tim

+1

ファイルを作成/コピーすることもできます'/ etc/sudoers.d'には、デフォルトとしてのほとんどのディストリビューションがその行をインクルードしています... –

関連する問題