ansible概述、安装、命令基础

ansible概述

Ansible是2013年推出的一款IT自动化和DevOps软件,目前由Redhat已签署Ansible收购协议。其是基于Python研发,糅合了很多老运维工具的优点。实现了批量操作系统配置,批量程序的部署,批量运行命令等功能。

为什么要选择ansible?

? ansible优点

是仅需要ssh和Python即可使用

无客户端

? ansible功能强大,模块丰富

? 上手容易门槛低

? 基于 python 开发,做二次开发更容易

? 使用公司比较多,社区活跃

ansible安装

环境准备:

virsh制作6台虚拟机(2G内存、2CPU、20G硬盘、root密码为123456)

  • 1台管理机ansible(192.168.4.10)
  • 另外5台虚拟机:
  1. web1 (192.168.4.11)
  2. web2 (192.168.4.12)
  3. db3    (192.168.4.13)
  4. db4    (192.168.4.14)
  5. cache5 (192.168.4.15)

[[email protected] ~]# cat /etc/yum.repos.d/local.repo    //自定义ansible的安装yum源

[public]

name=public

baseurl=ftp://192.168.4.254/public        //真实机ftp有ansible的rpm包及依赖包

enabled=1

gpgcheck=0

[centos7]

name=centos7

baseurl=ftp://192.168.4.254/centos7

enabled=1

gpgcheck=0

[[email protected] ~]# vim /etc/hosts      //设置6台机器IP与主机名对应关系

[[email protected] ~]# yum -y install ansible      //使用yum安装ansible(安装方式有源码编译、yum、pip等)

[[email protected] ~]# ansible --version      //查看ansible版本

主机定义与分组

[[email protected] ~]# cd /etc/ansible/

[[email protected] ansible]# vim ansible.cfg       //修改ansible配置文件

inventory = /etc/ansible/hosts     //取消注释

[[email protected] ansible]# vim hosts          //设置需要管理的主机的分组

[web]

web1

web2

[db]

db3

db4

[cache]

cache5

[[email protected] ansible]# ansible web,db --list-hosts       //列出分组中的主机

hosts (4):

web1

web2

db3

db4

[[email protected] ansible]# ansible all --list-hosts           //列出所有主机

hosts (5):

web1

web2

cache5

db3

db4

ssh交互式密码登录远程主机

[[email protected] ansible]# vim ansible.cfg

:61

host_key_checking = False     //取消注释

[[email protected] ansible]# ansible web -m ping -k      //交互式登录

SSH password:             //输入密码123456

web2 | SUCCESS => {

"changed": false,

"ping": "pong"

}

web1 | SUCCESS => {

"changed": false,

"ping": "pong"

}

ssh非交互式登录远程主机

(先修改了db3、db4的root密码分别为a、b)

[[email protected] ansible]# vim hosts

[db]

db3 ansible_ssh_pass="a"

db4 ansible_ssh_pass="b"

[[email protected] ansible]# ansible db -m ping      //非交互式登录

db4 | SUCCESS => {

"changed": false,

"ping": "pong"

}

db3 | SUCCESS => {

"changed": false,

"ping": "pong"

}

注:ansible建立的是长连接。即客户端和服务端只用一个Socket对象,长期保持Socket的连接。socket文件在/root/.ansible/cp/

[[email protected] ansible]# ls /root/.ansible/cp/

6b13a69203

设置参数、子组

[[email protected] ansible]# vim hosts

[web]

web[1:2]

[web:vars]      //参数

ansible_ssh_pass="123456"

[db]

db3

db4

[app:children]   //子组

web

db

[cache]

cache5

ansible命令基础

命令格式:

ansible 主机或分组 -m 模块名 -a 模块的参数

-M 指定模块路径

-m 使用模块,默认 command 模块

-a or --args 模块参数

-i inventory 文件路径,或可执行脚本

-k 使用交互式登录密码

-e 定义变量

-v 详细信息,-vvvv 开启 debug 模式

例如:

[[email protected] ~]# ansible web -m command -a ‘uptime‘

web2 | SUCCESS | rc=0 >>

09:00:52 up 12 min, 1 user, load average: 0.14, 0.15, 0.18

web1 | SUCCESS | rc=0 >>

09:00:52 up 12 min, 1 user, load average: 0.00, 0.13, 0.19

批量部署SSH密钥登录

原因:

? 交互输入密码较麻烦

? 密码写入配置文件安全性很差

? 不同远程主机如果密码不同,配置文件将很复杂

步骤:

给所有主机部署公钥:

[[email protected] ~]# vim  /etc/ansible/hosts    //先删除之前实验设置的密码

[[email protected] ~]# cd /root/.ssh/

[[email protected] .ssh]# ssh-keygen -t rsa -b 2048 -N ‘ ‘ //生成一对密钥。-t type 指定密钥算法,-b bits 指定密钥长度,对于RSA密钥,最小要求768位,默认是2048位。 -N new_passphrase 提供一个新的密语。

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa):

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.

The key fingerprint is:

SHA256:frfCsFFWF9bjKOrFpyGncn/8NBJTzbwqr1xEPb6BKPg [email protected]

The key‘s randomart image is:

+---[RSA 2048]----+

| oo    |

| ..o+o|

| . oo+=|

| . o.o.+.o|

| .S+o..= + |

| .+o.=..+o|

| oE*.*+ +|

| ..=+o++o.|

| o .=+... |

+----[SHA256]-----+

[[email protected] .ssh]# ls

authorized_keys   id_rsa   id_rsa.pub   known_hosts

[[email protected] .ssh]# ansible  all  -m  authorized_key -a  "user=root  exclusive=true  manage_dir=true key=‘$(</root/.ssh/id_rsa.pub)‘"  -k    //批量给所有主机部署SSH密钥

SSH password:        //输入root密码(所有主机密码一样)

......

若报错

"msg": "Using a SSH password instead of a key is

not possible because Host Key checking is

enabled and sshpass does not support this.

Please add this host‘s fingerprint to your

known_hosts file to manage this host."

解决方法:

修改ansible.cfg

host_key_checking = False

原文地址:https://www.cnblogs.com/iouwenbo/p/10236564.html

时间: 2024-10-08 13:20:45

ansible概述、安装、命令基础的相关文章

【mac】ansible安装及基础使用

安装 环境释放 mac 10.12.5 #more /System/Library/CoreServices/SystemVersion.plist 安装命令 #ruby -e "$(curl --insecure -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" #brew update #brew install Ansible 安装后hosts默认访问位置 /usr/local/et

Linux安装与基础命令

首先准备一个liunx镜像和一台安装好虚拟机的电脑. 配置好虚拟机,选在稍后安装.选择镜像文件,开启虚拟机进行安装. 配置yum源.首先插入光盘.由于是虚拟机,用的光盘镜像, 在/mnt/下面创建一个文件夹yum .      复制所有光盘里的内容到/mnt/yum   cp -rf /media/RHEL_5.9\ x86_64\ DVD/*  /mnt/yum 用vim编辑器配置文件   vim /etc/yum.repo.d/rhel-debuginfo.repo 配置如下: [rhel]

MongoDB 学习笔记一 安装以及基础命令

一.MongoDB安装配置 1.获取最新版本: wget http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-2.0.2.tgz 2.解压缩即可执行 tar zxvf mongodb-linux-x86_64-2.0.2.tgz tar zxvf mongodb-linux-x86_64-2.0.2.tgz cd /usr/mongodb-linux-x86_64-2.0.2/bin 但是在运行前,需要创建mongodb需要的存放数据和日志的

自动化运维之Ansible的安装部署与命令模块

Ansible简介 Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet.cfengine.chef.func.fabric)的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架. 主要包括: (1)连接插件connection plugins:负责和被监控端实现通信: (2)host inventory:指定操

ansible命令基础

7.ansible命令基础7.1语法7.1.1ansibleansible <host-pattern> [-f forks] [-m module_name] [-a args]host-pattern:对哪些主机生效,可以直接跟ip,可以调用hosts文件中的定义-f forks:并发线程数,即一批处理多少个主机-m module:使用哪个模块-a args:模块特有的参数,有的有默认值-i 文件名 相当于-inventory-file=文件,可以指定hosts文件7.1.2ansible

最小化安装CentOS基础命令

最小化安装CentOS基础命令 # yum install vim iotop bc gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl openssl-devel zip unzip zlib-devel net-tools lrzsz tree ntpdate telnet lsof tcpdump wget libevent libevent-devel bc systemd-devel bash-completion tracero

ansible playbook实践(二)-基础相关命令

ansible相关的命令: ansible  用来执行ansible管理命令 ansible-doc 用来获取模块的帮助文档 ansible-playbook 当有众多任务时,可编写成playbook来运行 ansible的简单使用格式: ansible HOST-PATTERN -m MOD_NAME -a MOD_ARGS 获取模块列表 ansible-doc -l 里面有众多模块,掌握一些常用的即可满足日常工作 ansible-doc -s modulename # 获取模块简要使用说明

ansible(二)基础篇

这篇总结一下Inventory,变量,目标匹配,及/usr/bin/ansible 命令行常用的模块 上一篇也说过Inventory的默认路径是在/etc/ansible/hosts,当然这个东西可以说是静态的,为啥是静态呢,你要手工的把你的要管理的主机写进去. 当然还有一种动态的Inventory,这个其实也简单,就是如果你已经有了一个资源管理系统,里面有你们的所有主机信息.然后咱们写个脚本程序,把你们资源管理系统里面的这些信息给拉过来,以json格式呈现就OK了. 其实ansible还有一种

自动化运维之Ansible概述及Ansible部署|(持续更新中)

Ansible概述 由于互联网的快速发展导致产品更新换代速度逐渐加快,运维人员每天都要进行大量的维护操作,仍旧按照传统方式进行维护使得工作效率低下.这时,部署自动化运维就可以尽可能安全,高效地完成这些工作. 一般会把自动化运维工具划分为两类:一类是需要使用代理工具的,也就是基于专用的Agent程序来完成管理功能,如:Puppet.Func.Zabbix等:另外一类是不需要配置代理工具的,可以直接基于SSH服务来完成管理功能,如:Ansible.Fabric等. 1.Puppet Puppet基于