Saya menggunakan Ansible dan saya memiliki konfigurasi ini di inventaris saya / semua:
[master]
192.168.1.10 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant
[slave]
192.168.1.11 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant
192.168.1.12 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant
[app]
192.168.1.13 ansible_connection=ssh ansible_ssh_user=vagrant ansible_ssh_pass=vagrant
[all:children]
master
slave
Saya tidak ingin mengulangi semua parameter untuk setiap instance baru. Bagaimana saya bisa mengonfigurasinya hanya di satu tempat? Apakah ada file dengan parameter ini?
~/.ssh/config
Jawaban:
Anda dapat menambahkan bagian berikut ke file inventaris Anda:
Catatan: Sebelum Ansible 2.0
ansible_user
tadinyaansible_ssh_user
.sumber
[all:vars] ansible_connection=ssh ansible_port=22 ansible_user=admin
ansible_port
, jadi Anda tidak perlu menentukannya secara eksplisit kecuali berbeda. Tertarik jika ada yang tahu cara menerapkan variabel ke lebih dari satu grup pada satu waktu (tetapi tidak 'semua'), pemisahan koma tampaknya tidak berhasil.Variabel Grup
Anda dapat mengatur variabel yang berlaku untuk semua host dengan menggunakan tata letak playbook yang ditentukan dalam dokumen Praktik Terbaik Ansible dan membuat
group_vars/all
file tempat Anda mendefinisikannya .[edit] Namun saya bingung dengan apa yang Anda coba lakukan. Anda tidak perlu menentukan pengguna atau kata sandi yang mungkin dalam inventaris. Jika Anda menggunakan Vagrant, Anda pasti tidak, dan jika Anda menelepon Ansible dari baris perintah, Anda dapat menentukan pengguna dengan
--user=vagrant
dan meminta pengguna untuk memasukkan kata sandi--ask-pass
.sumber
group_vars/all/main.yml
atau sederhananyagroup_vars/all
?sshpass
-"you must install the sshpass program"
group_vars/all
.Saya pikir lebih baik menggunakan instalasi kunci ssh ke semua server di tarikan. Anda harus menjalankan ssh-copy-id hanya per node dan menginstal kunci ssh Anda di mana saja untuk kemampuan yang memungkinkan untuk login menggunakan kunci ssh Anda. Akan lebih aman untuk tidak menyimpan kata sandi ke dalam buku pedoman / inventaris.
Untuk melakukan ini, Anda harus membuat pasangan kunci ssh Anda dan menjalankan ssh-copy-id untuk semua server sesudahnya.
sumber
Tambahkan di bawah ini ke host inventaris.
Untuk Ansible <2.0:
For Ansible> = 2.0 :
sumber
ansible_ssh_pass
, bukanansible_pass
.Penafian: Saya hanya menguji ini pada OSX. Berdasarkan berbagai dokumen, saya berharap ini berfungsi pada platform lain.
"direktori proyek" merujuk ke direktori dasar untuk proyek Vagrant - direktori yang berisi
Vagrantfile
.File Inventaris yang dimungkinkan dihasilkan secara otomatis oleh Vagrant:
Vagrant membuat file inventaris dengan vars koneksi Ansible default. Mencarinya di
<project directory>/.vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory
.File ini akan dibuat ulang oleh Vagrant sesuai kebutuhan, sehingga pengeditan manual akan ditimpa. Namun, menurut dokumen Vagrant, Anda dapat menentukan beberapa mesin, vars grup, dll,
Vagrantfile
dan mereka akan ditambahkan ke file inventaris ini.Konfigurasikan Dapat default ke file inventaris ini:
Untuk menjadikan file ini sebagai default yang digunakan oleh
ansible
perintah ketika Anda berada di direktori proyek (di host), tambahkanansible.cfg
file di direktori proyek Anda dengan konten ini, mengubah jalur yang diperlukan:Untuk mengonfirmasi bahwa file inventaris ini digunakan, cari sebagai default yang dilaporkan oleh ansible:
(dari dalam direktori proyek)
$ ansible | grep inventory ERROR! Missing target hosts -i INVENTORY, --inventory-file=INVENTORY specify inventory host path (default=./.vagrant/provis ioners/ansible/inventory/vagrant_ansible_inventory) or
Untuk mengonfirmasi host Anda:
$ ansible all --list-hosts hosts (2): master slave
Menggunakan Ansible dengan host ini:
Dari dalam direktori proyek, Anda kemudian dapat menggunakan
ansible
seperti biasa dengan host yang Anda tentukanVagrantfile
.Sebagai contoh:
sumber