1
這是一步一步的我想要通過Ansible做到:如何在第一遍時以root身份運行Ansible?
- SSH作爲根
- 安裝Python(在Ubuntu中不存在),以及其他基本包。
- 創建新的
deploy
用戶和配置/etc/ssh/sshd_config
這樣PasswordAuhentication no
和PermitRootLogin no
。 - 重新啓動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
我錯過了禁用根訪問的部分。在這種情況下,我認爲你最好的選擇就是單獨製作劇本。 – larsks