Ansible安裝配置
- 2019 年 11 月 12 日
- 筆記
1、Ansible簡介
ansible基於python開發,集合了眾多優秀運維工具的優點,實現了批量運行命令、部署程式、配置系統等功能。默認通過SSH協議進行遠程命令執行或下發配置,無需部署任何客戶端代理軟體,從而使得自動化環境部署變得更加簡單。可同時支援多台主機並進行管理,使得管理主機更加便捷。主版本大概每2個月發布一次。
2、核心組件說明
Host Lnventory:記錄了每一個由Ansible管理的主機資訊,資訊包括ssh埠,root帳號密碼,ip地址等等。可以通過file來載入,可以通過CMDB載入Playbooks:YAML格式文件,多個任務定義在一個文件中,使用時可以統一調用,「劇本」用來定義那些主機需要調用那些模組來完成的功能.Core Modules:Ansible執行任何管理任務都不是由Ansible自己完成,而是由核心模組完成;Ansible管理主機之前,先調用core Modules中的模組,然後指明管理Host Lnventory中的主機,就可以完成管理主機。Custom Modules:自定義模組,完成Ansible核心模組無法完成的功能,此模組支援任何語言編寫。Connection Plugins:連接插件,Ansible和Host通訊使用

3、Ansible的優勢
1.輕量級;
2.不需要安裝客戶端,通過sshd通訊;
3.基於模組工作,配置更加簡單,容易上手。
4.使用Python開發。
4、Ansible的安裝和配置
4.1Ansible的安裝
[root@docker-02 ~]# yum install ansible
4.2Ansible的配置
[root@docker-02 ~]# vim /etc/ansible/ansible.cfg inventory =/etc/ansible/inventory roles_path =/data/ansible/roles remote_user =root
4.3創建文件夾
[root@docker-02 ~]# mkdir -p /etc/ansible/inventory [root@docker-02 ~]# mkdir -p /data/ansible/playbooks [root@docker-02 ~]# mkdir -p /data/ansible/roles [root@docker-02 ~]# rm -rf /etc/ansible/host [root@docker-02 ~]# rm -rf /etc/ansible/roles
4.4配置inventory
[root@docker-02 ~]# vim /etc/ansible/inventory/lvs_list [group] docker-03
4.5對group組,使用shell模組,執行hostname命令
[root@docker-02 ~]# ansible group -m shell -a 'ip add' The authenticity of host 'docker-01 (172.17.120.50)'can't be established. ECDSA key fingerprint is SHA256:Lg+vWQTiAsfgFUcr+PGAWPUc2d4C1dzSjf25SSWYGho. ECDSA key fingerprint is MD5:01:00:72:55:c9:5d:b5:e4:82:e7:3c:8f:60:fc:37:95. Are you sure you want to continue connecting (yes/no)? docker-03 | CHANGED | rc=0>> 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500qdisc pfifo_fast state UP group default qlen 1000 link/ether 02:00:38:b7:00:53 brd ff:ff:ff:ff:ff:ff inet 172.17.120.52/24 brd 172.17.120.255 scope global noprefixroute dynamic eth0 valid_lft 2356288sec preferred_lft 2356288sec
5、執行Playbook
[root@docker-02 playbooks]# vim /data/ansible/playbooks/centos-os-init.yml --- -hosts: group tasks: -name: upgrade all packages yum: name: '*' state: latest [root@docker-02 playbooks]# ansible-playbook /data/ansible/playbooks/centos-os-init.yml PLAY [group] ******************************************************************* TASK [Gathering Facts] ********************************************************* ok: [docker-03] ok: [172.17.1.151] ok: [172.17.1.150]
採用playbook的配置方式可以更加方便地對管理主機進行部署,可以對任務進行分類,包括像新裝主機的初始化配置、安裝應用程式、拷貝文件,修改許可權等等。一路配置下了感覺非常方便快捷,上手很容易,確實是運維的一大利器,比puppet什麼的不知道高明到哪裡去了, 雖然我們公司用的仍然是puppet,但感覺還是Ansible方便好用啊。