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方便好用啊。