Ansible安装配置

2019-11-12 18:06:37 浏览数 (1)

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的安装

代码语言:javascript复制
 [root@docker-02 ~]# yum install ansible

4.2Ansible的配置

代码语言:javascript复制
 [root@docker-02 ~]# vim /etc/ansible/ansible.cfg 
 inventory =/etc/ansible/inventory
 roles_path =/data/ansible/roles
 remote_user =root

4.3创建文件夹

代码语言:javascript复制
 [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

代码语言:javascript复制
 [root@docker-02 ~]# vim /etc/ansible/inventory/lvs_list
 [group]
 docker-03

4.5对group组,使用shell模块,执行hostname命令

代码语言:javascript复制
 [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

代码语言:javascript复制
 [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方便好用啊。

0 人点赞