Set remote_user für Aufgaben in Ansible playbook ohne Wiederholung es pro Aufgabe
Erstelle ich ein playbook-die erste schafft einen neuen Benutzernamen ein. Dann möchte ich laufen "moretasks.yml" als dieser neue Benutzer, die ich erstellt habe. Aktuell habe ich die Einstellung remote_user für jede Aufgabe. Gibt es eine Möglichkeit, ich kann es für die Gesamtheit der Aufgaben einmal? Ich konnte nicht scheinen zu finden, Beispiele HIERFÜR, noch haben alle meine versuche zu bewegen remote_user um Hilfe.
Unten ist main.yml:
---
- name: Configure Instance(s)
hosts: all
remote_user: root
gather_facts: true
tags:
- config
- configure
tasks:
- include: createuser.yml new_user=username
- include: moretasks.yml new_user=username
- include: roottasks.yml #some tasks unrelated to username.
moretasks.yml:
---
- name: Task1
copy:
src: /vagrant/FILE
dest: ~/FILE
remote_user: "{{newuser}}"
- name: Task2
copy:
src: /vagrant/FILE
dest: ~/FILE
remote_user: "{{newuser}}"
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zunächst alles, was Sie sicherlich nutzen wollen
sudo_user
(remote user ist der, der sich anmeldet,sudo_user
ist derjenige, der führt die Aufgabe).In Ihrem Fall, dass Sie wollen, führen Sie die Aufgabe, sich als ein anderer Benutzer (der vorher erstellt werden), setzen Sie einfach:
sowie diejenigen Aufgaben ausgeführt werden, wie {{ Neuerbenutzer }} (vergessen Sie nicht die Anführungszeichen)
Bemerkung: In den meisten Fällen sollten Sie überlegen
remote_user
als host-parameter. Es ist der Benutzer, erlaubt den login auf der Maschine und das über ausreichende Rechte verfügt, um Dinge zu tun. Für die betrieblichen Sachen, die Sie verwenden solltensudo
/sudo_user
sudo
undsudo_user
wurden verworfen zugunsten vonbecome
undbecome_user
. docs.ansible.com/ansible/become.html#becomeKönnten Sie aufgeteilt in separate spielt? (playbooks kann mit mehreren spielt)
Es ist ein gotcha mit separaten spielt: können Sie Variablen nicht gesetzt mit
register:
oderset_fact:
in den ersten spielen, Dinge zu tun, in der zweiten play - (diese Aussage ist nicht ganz richtig, die Variablen stehen inhostvars
, aber ich empfehle nicht die Verwendung von Variablen zwischen den Rollen). Definierte Variablen wie in group_vars und host_vars gut funktionieren.Anderen Tipp, den ich geben möchte, ist, zu schauen, mit
roles
http://docs.ansible.com/playbooks_roles.html. Während es scheinen mag, mehr zunächst kompliziert, ist es viel einfacher wieder verwenden (als Sie scheinen zu tun mit der "createuser.yml"). Blick auf die Art der Dinge, die Sie versuchen zu erreichen, der 'alle Dinge' Weg nicht mehr dauern.Art von inline mit Ihrem Problem. Hoffe, es hilft. Während der Aktualisierung meines playbooks für Ansible 2.5 support für die Cisco IOS-network_cli Verbindung
Credential-Datei erstellt mit ansible-vault: auth/Geheimnisse.yml
Playbook:
Läuft playbook ohne auth/Geheimnisse.yml creds: