2017-03-21 70 views
1

這是一步一步的我想要通過Ansible做到:如何在第一遍時以root身份運行Ansible?

  1. SSH作爲根
  2. 安裝Python(在Ubuntu中不存在),以及其他基本包。
  3. 創建新的deploy用戶和配置/etc/ssh/sshd_config這樣PasswordAuhentication noPermitRootLogin no
  4. 重新啓動ssh服務。

後來我更新我的新任務,角色,等劇本所以我想重新對運行在同一臺服務器的劇本(其中有root通路受阻),只是這次訪問爲新創建的用戶。

由於Ansible試圖以root身份進行訪問,我預計會返回Permission denied訪問權限。

問題

  • 如何我只是這樣做第一遍爲根,然後跳過根本任務(pre_tasks在這種情況下)上的下一個劇本運行?

其中一種選擇是將它製作成兩個單獨的劇本:一個用於省錢,一個用於其餘。

# playbook.yml 
--- 
- name: Prepare server 
    hosts: webserver 
    gather_facts: False 
    pre_tasks: 
    - name: Install python for Ansible 
     remote_user: root 
     raw: type /usr/bin/python || (apt -y update && apt install -y python) 
    - name: Create user 
     remote_user: root 
     include_role: 
     name: deploy-user 

    roles: 
    # Future roles here 
#roles/deploy-user/tasks/main.yml 
--- 
- group: 
    name: deploy 
    state: present 

- name: Create Deploy user 
    user: 
    name={{ deploy_user }} 
    comment="Deploy User" 
    groups="sudo,deploy" 
    password="{{ deploy_password | password_hash('sha512') }}" 
    shell=/bin/bash 
    update_password=on_create 


- name: Set authorized key took from files 
    authorized_key: 
    user: "{{ deploy_user }}" 
    state: present 
    key: "{{ lookup('file', item) }}" 
    with_items: 
    - '{{ ssh_authorized_keys }}' 

- name: Disallow password authentication 
    lineinfile: 
    dest: /etc/ssh/sshd_config 
    regexp: "^PasswordAuthentication" 
    line: "PasswordAuthentication no" 
    state: present 

- name: Disallow root SSH access 
    lineinfile: 
    dest: /etc/ssh/sshd_config 
    regexp: "^PermitRootLogin" 
    line: "PermitRootLogin no" 
    state: present 

- name: restart-sshd 
    remote_user: root 
    service: name=ssh state=restarted 
+0

我錯過了禁用根訪問的部分。在這種情況下,我認爲你最好的選擇就是單獨製作劇本。 – larsks

回答

1

創建定義相同的主機組的兩個清單文件:

    中的第一個( bootstrap)在第二個( inventory)限定 ansible_user=regular_user_with_sudo_permissions定義 ansible_user=root

將第二個(inventory)定義爲ansible.cfg中的默認庫存文件。

無論何時您需要引導新機器,都可以使用選項。在其他情況下省略該選項。

相關問題