云运维-任务5.1-Ansible(1)搭建与运维-20201222

Ansible

 
 

2.1 Ansible 介绍
(1)Ansible 不需要安装客户端,通过 sshd 去通信(无密钥登录)。 
(2)Ansible 基于模块工作,模块可以由任何语言开发。 
(3)Ansible 不仅支持命令行使用模块,也支持编写 Yaml 格式的 playbook,易于编写和阅读。 
(4)Ansible 安装十分简单,CentOS 上可直接 Yum 安装。 
(5)一本不错的入门电子书 https://ansible-book.gitbooks.io/ansible-first-book/

 

2.2 Ansible 安装
(1)环境准备

创建两台虚拟机,关闭防火墙和selinux,ping通百度
关闭sellinux如果是通过修改文件,修改完后一定要重启虚拟机,如果使用的是setenforce 0,则不需要

# systemctl stop firewalld
# systemctl disable firewalld
# vi  /etc/selinux/config
把 SELINUX 后的单词改为:disabled

#vi /etc/hosts     //添加虚拟机IP地址及主机名
在末尾添加:
192.168.2.10 ansible-test1
192.168.2.20 ansible-test2

 

(2)安装 Ansible

准备两台机器 anisble-01 和 anisble-02,只需要在 anisble-01 上安装 Ansible,先安装 epel 仓库。

#yum install epel-release -y
#yum install -y ansible
#ansible --version

 

(3)免密配置

anisble-01 上生成密钥对 ssh-keygen -t rsa,把公钥放到 anisble-02 上,设置密钥认证。

#ssh-keygen -t rsa   //一直回车就行
#ssh-copy-id 192.168.2.10    //拷贝给本机(testhost是要写成192.168.2.10,如果是写成127.0.0.1,这里就要ssh-copy-id 127.0.0.1)
#ssh-copy-id 192.168.2.20    //拷贝给另一台机器(有多台情况下也要拷贝)
                                                
#ssh 192.168.2.20
Last login: Mon Dec 21 21:51:52 2020 from ansible-test1

#exit  //退出
logout
Connection to 192.168.2.20 closed.

 

(4)主机组设置

在/etc/ansible/hosts 文件中添加本机和另一台机器的 IP;

#vi /etc/ansible/hosts    //说明:testhost 为自定义的主机组名字,下面两个 IP 为组内的机器 IP
[testhost]
127.0.0.1  ansible_ssh_pass=123456 ansible_ssh_user=root
192.168.2.20  ansible_ssh_pass=123456 ansible_ssh_user=root

 

2.3 Ansible 远程执行命令

这样就可以批量执行命令了。这里的 testhost 为主机组名,
-m 后边是模块名字,
-a 后面是命令,
-k ask for SSH password 登录密码,提示输入SSH密码而不是假设基于密钥的验证,
当然我们也可以直接写一个 IP,针对某一台机器来执行命令。

 

#vi /etc/ansible/ansible.cfg
搜索 host_key 把前面的注释符去掉,保存退出!


#ansible testhost -m command -a "hostname"        //无需密码执行命令,并反馈正确信息
#ansible 192.168.2.20 -m command -a "hostname"   //通过IP地址,针对某一台机器来执行命令。

在这里插入图片描述

 

2.4 Ansible 拷贝文件或目录

源目录会放到目标目录下面去,如果目标指定的目录不存在,它会自动创建。如果拷贝的是文件,如果 dest 指定的名字和源不同,并且它不是已经存在的目录,相当于拷贝过去后又重命名。但相反,如果 desc 是目标机器上已经存在的目录,则会直接把文件拷贝到该目录下面。

 

#ansible 192.168.2.20 -m copy -a "src=/etc/passwd dest=/tmp/123"

在这里插入图片描述

这里的/tmp/123 和源机器上的/etc/passwd 是一致的,但如果目标机器上已经有/tmp/123 目录,则会再/tmp/123 目录下面建立 passwd 文件。

 

2.5 Ansible 远程执行脚本

首先创建一个shell脚本。

##!/bin/bash
echo `date` > /tmp/ansible_test.txt

 

然后把该脚本分发到各个机器上。

#ansible testhost -m copy -a "src=/tmp/test.sh dest=/tmp/test.sh mode=0755"

在这里插入图片描述

 

最后是批量执行该 shell 脚本。

#ansible testhost -m shell -a "/tmp/test.sh"

在这里插入图片描述

 

shell 模块,还支持远程执行命令并且带管道。

#ansible testhost -m shell -a "cat /etc/passwd |wc -l"
#cat /tmp/ansible_test.txt 

在这里插入图片描述

 

2.6 Ansible 管理任务计划

创建任务计划,命名并定义工作。

#ansible testhost -m cron -a "name='test cron' job='/bin/bash/tmp/test.sh' weekday=6"

在这里插入图片描述

 

若要删除该cron只需要加一个字段 state=absent

#ansible testhost -m cron -a “name=‘test cron’ state=absent”
在这里插入图片描述

其他的时间表示,分钟:minute;小时:hour;日期:day;月份:month。

 

2.7 Ansible 安装 RPM 包/管理服务

使用 Yum 模块安装 httpd 服务:

#ansible testhost -m yum -a "name=httpd"    //这里显示success是因为博主执行了两次这个命令,第一次执行命令
                                             显示CHANGED即为成功,只是太占篇幅,选择不列出

在这里插入图片描述

 

在name后面还可以加上 static=installed/removed。
设置服务状态,这里的name是CentOS系统里的服务名,可以通过chkconfig-list 命令查到。

#ansible testhost -m service -a "name=httpd state=started enabled=yes"

 
在这里插入图片描述

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值