Ansible ialah pengurus konfigurasi dipacu model yang menyokong penerbitan berbilang nod dan pelaksanaan tugas jauh. Secara lalai, SSH digunakan untuk sambungan jauh. Tidak perlu memasang perisian tambahan pada nod terurus dan ia boleh dilanjutkan menggunakan pelbagai bahasa pengaturcaraan.
1. Seni bina asas Ansible
Gambar di atas menunjukkan seni bina asas ansible Daripada gambar di atas, anda boleh memahami bahawa ia terdiri daripada bahagian berikut:
- Teras: ansible
- Modul Teras: Ini adalah modul yang disertakan dengan ansible
- Modul sambungan (Modul Tersuai): Jika modul teras tidak mencukupi untuk melengkapkan fungsi tertentu, anda boleh menambah modul sambungan
- Pemalam: Lengkapkan pelengkap fungsi modul
- Playbooks: Fail konfigurasi tugas Ansible, yang mentakrifkan berbilang tugasan dalam playbook dan dilaksanakan secara automatik oleh ansible
- Pemalam Penyambung: ansible menyambung ke setiap hos berdasarkan pemalam sambungan Walaupun ansible menggunakan ssh untuk menyambung ke setiap hos, ia juga menyokong kaedah sambungan lain, jadi pemalam sambungan diperlukan
.
- Inventori Hos: Tentukan hos yang diuruskan oleh ansible
2. Prinsip kerja ansible
Di atas ialah dua rajah prinsip kerja boleh didapati di Internet Kedua-dua rajah pada asasnya adalah pengembangan berdasarkan rajah seni bina. Anda boleh faham dari gambar di atas:
1. Terminal pengurusan menyokong tiga cara untuk menyambung ke terminal terurus: setempat, ssh dan zeromq lalai adalah menggunakan sambungan berasaskan ssh---bahagian ini sepadan dengan modul sambungan dalam rajah seni bina asas. ;
2. Inventori Hos (kumpulan hos) boleh dikelaskan mengikut jenis aplikasi, dsb. Nod pengurusan melaksanakan operasi yang sepadan melalui pelbagai modul - satu modul, pelaksanaan kumpulan bagi satu arahan, kita boleh memanggilnya ad-hoc ;
3. Nod pengurusan boleh menggunakan buku main untuk melaksanakan koleksi berbilang tugas untuk melaksanakan jenis fungsi, seperti pemasangan dan penggunaan perkhidmatan web, sandaran kelompok pelayan pangkalan data, dsb. Kami hanya boleh memahami buku main sebagai fail konfigurasi yang sistem kendalikan dengan menggabungkan berbilang operasi ad-hoc.
3. Tujuh perintah ansible
Selepas memasang ansible, kami mendapati bahawa ansible memberikan kami tujuh arahan secara keseluruhan: ansible, ansible-doc, ansible-galaxy, ansible-lint, ansible-playbook, ansible-pull, ansible-vault. Di sini kita hanya melihat bahagian penggunaan, dan bahagian terperinci boleh diperolehi melalui kaedah "command -h".
1. boleh
1.[root@localhost ~]# ansible -h
2.Usage: ansible [options]
Ansible ialah bahagian teras perintah, yang digunakan terutamanya untuk melaksanakan perintah ad-hoc, iaitu, satu arahan. Secara lalai, bahagian hos dan pilihan perlu diikuti Apabila modul tidak ditentukan secara lalai, modul arahan digunakan. Seperti:
1.[root@361way.com ~]# ansible 192.168.0.102 -a 'date'
2192.168.0.102 | success | rc=0 >>
3Tue May 12 22:57:24 CST 2015
Walau bagaimanapun, modul lalai boleh diubah suai dalam ansible.cfg. Parameter di bawah arahan ansible dijelaskan seperti berikut:
- Parameter:
- -a 'Arguments', --args='Arguments' parameter baris arahan
- -m NAME, --module-name=NAME Nama modul pelaksanaan Modul arahan digunakan secara lalai, jadi jika anda hanya melaksanakan satu arahan, anda tidak memerlukan parameter -m
- -i PATH, --inventory=PATH menentukan laluan ke fail hos inventori, lalainya ialah /etc/ansible/hosts.
- -u Nama pengguna, --user=Pengguna pelaksanaan nama pengguna, gunakan nama pengguna jauh ini dan bukannya pengguna semasa
- -U --sud-user=SUDO_User Pengguna mana yang hendak sudo, lalainya ialah root
- -k --ask-pass kata laluan log masuk, gesa untuk kata laluan SSH dan bukannya mengandaikan pengesahan berasaskan kunci
- -K --ask-sudo-pass gesaan untuk penggunaan kata laluan sudo
- -s --sudo sudo run
- -S --su Gunakan arahan su
- -l --list memaparkan semua modul yang disokong
- -s --snippet menentukan modul untuk memaparkan coretan skrip
- -f --forks=NUM Bilangan tugasan selari. NUM ditentukan sebagai integer, lalainya ialah 5. #ansible testhosts -a "/sbin/reboot" -f 10 Mulakan semula semua mesin dalam kumpulan testhosts, 10 mesin pada satu masa
- --private-key=PRIVATE_KEY_FILE laluan kunci peribadi, gunakan fail ini untuk mengesahkan sambungan
- -v --butiran kasar
- semua laksanakan
untuk semua hos yang ditakrifkan oleh hos
- -M MODULE_PATH, --module-path=MODULE_PATH Laluan modul yang akan dilaksanakan, lalainya ialah /usr/share/ansible/
- --list-hosts hanya mencetak hos mana yang akan melaksanakan fail playbook ini, sebenarnya tidak melaksanakan fail playbook
- -o --output mampat satu baris, keluaran ringkasan Cuba keluarkan semuanya pada satu baris.
- -t Direktori, --tree=Direktori Simpan kandungan dalam direktori output ini, menyimpan keputusan dalam fail pada setiap hos.
- -Tamat masa larian latar belakang B
- -P Siasat masa program latar belakang
- -T Saat, --masa tamat=Masa saat dalam saat
- -P NUM, --poll=NUM Poll background berfungsi setiap beberapa saat. Diperlukan - b
- -c Sambungan, --connection=Jenis sambungan sambungan untuk digunakan. Pilihan yang mungkin adalah paramiko(SSH), SSH dan tempatan. Tempatan digunakan terutamanya untuk crontab atau permulaan.
- --tags=TAGS Hanya laksanakan tugasan dengan tag yang ditentukan Contoh: ansible-playbook test.yml --tags=copy Hanya laksanakan tugasan dengan salinan tag
- --list-hosts hanya mencetak hos mana yang akan melaksanakan fail playbook ini, sebenarnya tidak melaksanakan fail playbook
- --list-tasks Senaraikan semua tugasan yang akan dilaksanakan
- -C, --semak hanya menguji perkara yang akan diubah dan tidak akan melaksanakannya sebaliknya, ia cuba meramalkan beberapa kemungkinan perubahan
- --syntax-check Lakukan semakan sintaks skrip, tetapi jangan laksanakan
- -l SUBSET, --limit=SUBSET hadkan lagi mod hos/kumpulan yang dipilih --limit=192.168.0.15 Hanya laksanakan ip ini
- --skip-tags=SKIP_TAGS Hanya jalankan mainan dan tugasan dengan tag yang tidak sepadan dengan nilai ini --skip-tags=copy_start
- -e EXTRA_VARS, --extra-vars=EXTRA_VARS Pembolehubah tambahan ditetapkan sebagai kunci=nilai atau YAML/JSON
- #cat update.yml
- ---
- - hos: {{ hos }}
- remote_user: {{ pengguna }}
- ............
-
#ansible-playbook update.yml --extra-vars "hosts=vipers user=admin" Lulus pembolehubah {{hosts}}, {{user}}, hos boleh menjadi ip atau nama kumpulan
-
-l,--had Laksanakan tugas pada hos/kumpulan yang ditentukan--limit=192.168.0.10, 192.168.0.11 atau -l 192.168.0.10, 192.168.0.11 Laksanakan 2 tugasan ini sahaja >
2. ansible-doc
# ansible-doc -h
Usage: ansible-doc [options] [module...]
该指令用于查看模块信息,常用参数有两个-l 和 -s ,具体如下:
- //列出所有已安装的模块
- # ansible-doc -l
-
//查看具体某模块的用法,这里如查看command模块
- # ansible-doc -s command
3、ansible-galaxy
# ansible-galaxy -h
Usage: ansible-galaxy [init|info|install|list|remove] [--help] [options] ...
ansible-galaxy 指令用于方便的从https://galaxy.ansible.com/ 站点下载第三方扩展模块,我们可以形象的理解其类似于centos下的yum、python下的pip或easy_install 。如下示例:
[root@localhost ~]# ansible-galaxy install aeriscloud.docker
- downloading role 'docker', owned by aeriscloud
- downloading role from https://github.com/AerisCloud/ansible-docker/archive/v1.0.0.tar.gz
- extracting aeriscloud.docker to /etc/ansible/roles/aeriscloud.docker
- aeriscloud.docker was installed successfully
这个安装了一个aeriscloud.docker组件,前面aeriscloud是galaxy上创建该模块的用户名,后面对应的是其模块。在实际应用中也可以指定txt或yml 文件进行多个组件的下载安装。这部分可以参看官方文档。
4、ansible-lint
ansible-lint是对playbook的语法进行检查的一个工具。用法是ansible-lint playbook.yml 。
5、ansible-playbook
该指令是使用最多的指令,其通过读取playbook 文件后,执行相应的动作,这个后面会做为一个重点来讲。
6、ansible-pull
该指令使用需要谈到ansible的另一种模式---pull 模式,这和我们平常经常用的push模式刚好相反,其适用于以下场景:你有数量巨大的机器需要配置,即使使用非常高的线程还是要花费很多时间;你要在一个没有网络连接的机器上运行Anisble,比如在启动之后安装。这部分也会单独做一节来讲。
7、ansible-vault
ansible-vault主要应用于配置文件中含有敏感信息,又不希望他能被人看到,vault可以帮你加密/解密这个配置文件,属高级用法。主要对于playbooks里比如涉及到配置密码或其他变量时,可以通过该指令加密,这样我们通过cat看到的会是一个密码串类的文件,编辑的时候需要输入事先设定的密码才能打开。这种playbook文件在执行时,需要加上 --ask-vault-pass参数,同样需要输入密码后才能正常执行。具体该部分可以参查官方博客。
注:上面七个指令,用的最多的只有两个ansible 和ansible-playbook ,这两个一定要掌握,其他五个属于拓展或高级部分。
Atas ialah kandungan terperinci Memahami seni bina yang boleh dipercayai dan prinsip kerja. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!