ansible安装及初步实践(一)

ansible 的作用这里就不说了直接进入安装吧
实验环境:
192.168.30.68作为ansible主机
192.168.30.69
192.168.30.70作为实验主机

安装

这里是ansible官网地址
在这里插入图片描述
我这里是centos的版本所以按着装就可以,其他操作系统对应文档就可以的。

[root@master1 .ssh]# cat /etc/redhat-release 
CentOS Linux release 7.8.2003 (Core)

更新源并直接下载

$ sudo yum install epel-release
$ sudo yum install ansible

[root@master1 ~]# cd /etc/ansible/
[root@master1 ansible]# ll
total 24
-rw-r--r--. 1 root root 19985 Aug 22 04:07 ansible.cfg 配置文件
-rw-r--r--. 1 root root  1051 Jan 13 20:01 hosts 主机清单
drwxr-xr-x. 2 root root     6 Aug 22 04:07 roles 软件剧本

前提

实现ansible的前提是主机之间实现免密钥通信,所以我们需要再主机生成密钥。并将公钥复制到其他主机以实现管理。

生成公钥

[root@master1 .ssh]# ssh-keygen -t rsa  #直接空格输入,默认会存放在/root/.ssh/下
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
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:KZTYO/XnOxer3N6kU/S9eTVH9e99Cy1d7JMCIyyX0c4 root@master1
The key's randomart image is:
+---[RSA 2048]----+
|                 |
|     o .  .     .|
|    . + .. .    o|
|     . o.o=    .+|
|      +.S=.E.  o*|
|       oo .oo +oX|
|            .+ XX|
|           ..oB**|
|            +=+o=|
+----[SHA256]-----+

[root@master1 ~]# ll /root/.ssh
total 12
-rw-------. 1 root root 1675 Jan 13 17:38 id_rsa
-rw-r--r--. 1 root root  394 Jan 13 17:38 id_rsa.pub
-rw-r--r--. 1 root root  700 Jan 11 15:25 known_hosts

id_rsa为私钥
id_rsa.pub为公钥,即我们需要转发的

分发公钥
这里实验机器不多,直接用的命令,有需要可以使用脚本分发

[root@master1 .ssh]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.30.70
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@192.168.30.70's password: 

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@192.168.30.70'"
and check to make sure that only the key(s) you wanted were added.

可以用 ssh ‘root@192.168.30.70’ 连接远成主机看是否连接成功
PS:如果生成密钥失败了,可以看下本地/root/.ssh/目录下是否已经有密钥了
如果分发失败了,也可以去到远成主机上查看是否已经有密钥了,有的话可以删除重新分发下(因为可能与当前的密钥不一致)

node1节点
[root@node1 ~]# ll ./.ssh
total 4
-rw-------. 1 root root 788 Jan 13 17:39 authorized_keys
[root@node1 ~]# cat ./.ssh/authorized_keys 
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC7Lsml6XJRtyjYZ0LonWHk2IQEw4A7fHuG8eO5OJPvxRqacyS9C9AXSH/OkLqelHDJHTm1GFjLXXq+yD/EQkvOBbUCNMClBLBl8yutFw+WLnKsZiqrerH7eT9uE1VbsLBNIHfVK1sC6FfRZMnFSxkKxb84YiWU+VJCBVXsI36Ys2pbYXVPn9UVCTQ0UVNq92IjWYaomy7ad+DaR8ZROZnEvkUOAMgPtl03UXeTrWuhJge7wiTzzn6lR73z2A/jdf0cFtz5MnC8aWpx3yfIr3dfXYW8s/9ufWfjIo9cYc2efG+6X/85ZnOKrI6iyUEJ2NAPJp1hkLMqa4PsEbxXE7+T root@master1

实现免密钥登录后,我们可以进行下一步操作

部署

## -a active
[root@master1 ~]# ansible all -a hostname
[WARNING]: provided hosts list is empty, only localhost is available. Note that the implicit localhost does
not match 'all'
由于还没有添加主机,这里指定是没有信息显示的
[root@master1 .ssh]# vim /etc/ansible/hosts 

主机清单配置

主机清单文件添加一个刚刚实现互通的ip
在这里插入图片描述


[root@master1 .ssh]# ansible 192.168.30.69 -m ping
192.168.30.69 | SUCCESS => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/bin/python"
    }, 
    "changed": false, 
    "ping": "pong"
}
#所有主机 执行 echo hello 命令
[root@master1 .ssh]# ansible all -a "echo hello"
192.168.30.69 | CHANGED | rc=0 >>
hello
[root@master1 .ssh]# ansible all -a "hostname"
192.168.30.69 | CHANGED | rc=0 >>
node1
[root@master1 .ssh]# vim /etc/ansible/hosts 
[root@master1 .ssh]# ansible node -a "hostname"
192.168.30.69 | CHANGED | rc=0 >>
node1

另一种配置方式(更实用)
划分指定的组
我们也可以把ip换成域名,但是需要在本地解析
在这里插入图片描述

[root@master1 .ssh]# vim /etc/ansible/hosts 
[root@master1 .ssh]# ansible node -a "hostname"
192.168.30.69 | CHANGED | rc=0 >>
node1
192.168.30.70 | CHANGED | rc=0 >>
node2

这里ansible初步实现安装和部署

实践

ansible用法
ansible 组名/ip地址 参数+模块 -a “用法”

这里实践一下command模块

-m command在目标端执行命令
注意:命令的执行过程不像脚本,所以变量,<,>,|,;.&都不能使用(shell模块可以)

ps:/jeff1目录是不存在的
   /jeff目录是存在的
   --creates
如果对端/jeff1目录不存在,则执行下一步操作
ansible 192.168.30.69 -m command -a " creates=/jeff1 touch 12345"

如果存在就跳过不执行

在这里插入图片描述

--removes
如果对端/jeff目录存在,则执行下一步操作
ansible 192.168.30.69 -m command -a " removes=/jeff touch 54321"
不存在则不执行

在这里插入图片描述

总结:

ansible连接问题策略:
1、管理端主机清单 ip不对 也有可能是网络问题
2、客户端公钥钥信息不对,或者没有建立基于密钥的连接
3、ssh远程服务没开启,防火墙策略,selinux没关
4、客户端有关ansible进程僵死了-- kill再连

伙伴们想要更加深入学习高级用法也可直接去ansible官网了解相关模块
下篇文章将讲解更多模块以及剧本的用法

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值