ansible_userBaşucu kitabının 'ilk çalıştırılması' için farklıysa (örneğin yalnızca bir rootkullanıcınız varsa ve SSH anahtarıyla yeni bir kullanıcı kuracaksanız) yaptığım şey :
- Parolayı,
ansible_passparola girişlerini kullanıyorsanız (Apps Kasası'nı kullanmayı unutmayın) yaptığınız gibi saklayın; bu, oynatma kitabının 'ilk çalıştırılması' için kullandığınız kullanıcının parolası olmalıdır.
- Set
ansible_userEğer sunucu üzerinde doğru kurulmuş kullanıcıları olduğunda ilk çalıştırdıktan sonra kullanmak istediğiniz kullanıcının kullanıcı adına.
ansible_user_first_runÖrneğin, oynatma kitabının 'ilk çalıştırılması' için kullanacağınız kullanıcıya bir değişken ayarlayın root.
- Sunucuya doğru SSH anahtarıyla bağlanmayı denemek için yerel bir komut kullanın
ignore_errorsvechanged_when: False
- Bu başarısız olursa,
ansible_userdeğerini güncelleyinansible_user_first_run
İşte kod:
---
- name: Check if connection is possible
command: ssh -o User={{ ansible_user }} -o ConnectTimeout=10 -o PreferredAuthentications=publickey -o PubkeyAuthentication=yes {{ inventory_hostname }} echo "Worked"
register: result
connection: local
ignore_errors: yes
changed_when: False
- name: If no connection, change user_name
connection: local
set_fact:
ansible_user: "{{ ansible_user_first_run }}"
when: result|failed
Not: transport = sshParamiko'nun bazı yapılandırmalarda beklenmedik bir şekilde sunucuya giriş yapamaması nedeniyle ayarlamaya değer (örneğin, sunucu şifreleri kabul etmeyecek şekilde ayarlandığında ve önce bir anahtarla, sonra bir şifre ile çalışıyorsunuz ... tuhaf!) Ayrıca ssh taşımacılığı daha hızlıdır, bu yüzden buna değer.
Ek not: Bu yöntemi kullanıyorsanız, gather_facts: falseşifre sınama aşamasına gelmeden kurulum / bilgi toplama görevlerinin otomatik olarak çalıştırılmaması için oynatma kitabı tanım dosyanızda belirtmeniz gerekir . Eğer yanıtlayıcı 'gerçeklerin herhangi gerekiyorsa, açıkça çağırmanız gerekir setupgibi yerlerde normal olarak mevcut herhangi bir veri erişmeden önce rol ansible_devicesvs. Bunu yapmanın iyi bir yolu aramaktır setupbir ile whençekler olmadığını görmek için bu fıkra Kullandığınız gerçek, rolünüz olarak adlandırmadan önce boştur ya da değildir.