ansible入门基本使用

日常博客编辑工~
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

gihub开源地址

https://github.com/search?q=ansible

ansible部署实践

准备好虚拟机:

实验环境:我这里准备四台虚拟机,centos6、7、8各一台作为被管理机器,还有一台centos7作为管理机器,配置在同一个局域网内,设置好静态ip,关闭防火墙跟selinux~

远程软件用的MobaXterm(汉化版),感觉一般般,Xshell用的比较顺手~
在这里插入图片描述

ansible安装:(centos系统)

先准备ansible管理机器(老板)

1、这里选择用yumm自动化安装,请自行提前准备好阿里云yum,epel源

yum install epel-release -y && yum install ansible libselinux-python -y

2、检查ansible安装情况,查询配置文件和可执行命令

 rpm -ql ansible | grep -E '^/etc|^/usr/bin'

3、检查ansible版本

[root@absible ~]# ansible --version
ansible 2.9.27
  config file = /etc/ansible/ansible.cfg
  configured module search path = [u'/root/.ansible/plugins/modules', u'/usr/share/ansible/plugins/modules']
  ansible python module location = /usr/lib/python2.7/site-packages/ansible
  executable location = /usr/bin/ansible
  python version = 2.7.5 (default, Oct 14 2020, 14:45:30) [GCC 4.8.5 20150623 (Red Hat 4.8.5-44)]

再准备ansible被管理机器(员工)

yum install epel-release libselinux-python -y   #每台被管理机器都装

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

vim /etc/ansible/hosts

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

[root@absible ~]# ansible xuyuhan -m command -a "cat /etc/redhat-release" -k -u root
SSH password:
192.168.230.101 | CHANGED | rc=0 >>
CentOS release 6.10 (Final)
192.168.230.108 | CHANGED | rc=0 >>
CentOS Linux release 7.9.2009 (Core)
192.168.230.110 | CHANGED | rc=0 >>
CentOS Linux release 8.5.2111

未设置免密连接出现报错解决:
在这里插入图片描述

vi /etc/ansible/ansible.cfg       

[defaults]
forks          = 8           #执行时并发数
host_key_checking = False    #不检测host key

在这里插入图片描述

在这里插入图片描述
1、在控制机器上创建ssh密钥对

ssh-keygen -f ~/.ssh/id_rsa -P "" > /dev/null 2>&1

2、检查生成的公私钥文件

 ls ~/.ssh/
id_rsa  id_rsa.pub  known_hosts  sshpass.sh

3、编写公钥分发脚本

#!/bin/bash

rm -rf ~/.ssh/id_rsa*
ssh-keygen -f ~/.ssh/id_rsa -P "" > /dev/null 2>&1

SSH_Pass=xuyuhan         #ssh密码根据实际情况更改
Key_Path=~/.ssh/id_rsa.pub

for ip in 101 108 110    #ip根据实际情况更改

do

sshpass -p$SSH_Pass ssh-copy-id -i $Key_Path "-o StrictHostKeyChecking=no" 192.168.230.$ip     # #ip根据实际情况更改

done

#非交互式分发公钥命令需要用sshpass指定密码,通过-o StrictHostKeyChecking=no   #跳过ssh连接确认信息

4、执行过脚本后再连接被控制机器就无须输入账密进行远程管理了

[root@absible ~]# ansible xuyuhan -m command -a "uname -a"
192.168.230.101 | CHANGED | rc=0 >>
Linux controled 2.6.32-754.35.1.el6.x86_64 #1 SMP Sat Nov 7 12:42:14 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
192.168.230.108 | CHANGED | rc=0 >>
Linux controled 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
192.168.230.110 | CHANGED | rc=0 >>
Linux controled 4.18.0-348.el8.x86_64 #1 SMP Tue Oct 19 15:14:17 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
[root@absible ~]#

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

ansible-doc命令

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

常用模块应用

ping模块

用以测试服务器是否连通~
在这里插入图片描述
在这里插入图片描述

command模块

在这里插入图片描述
在这里插入图片描述

1、chdir参数

先客户端机器先切换到 /root 目录下,再打印pwd当前目录
在这里插入图片描述

2、creates参数

该参数用于判断文件夹是否存在,存在则跳过,不存在则执行
在这里插入图片描述

3、removes参数

该参数用于判断文件夹是否存在,与creates效果相反,存在则执行,不存在跳过
在这里插入图片描述

4、warn参数

是否提供告警信息
在这里插入图片描述

shell模块

作用:在远程机器上执行复杂的命令(功能与command相似,但可使用正则表达式*、$等特殊符号)

使用案例:

1、 批量查询进程信息

先在被控机器打开vim进程
在这里插入图片描述

2、批量创建写入文件信息

在这里插入图片描述

3、批量执行脚本(脚本文件需存在于本地)

在这里插入图片描述
在这里插入图片描述

ansible xuyuhan -m shell -a "mkdir -p /server/myscripts/;echo 'hostname' > /server/myscripts/hostname.sh;chmod +x /server/myscripts/hostname.sh;bash /server/myscripts/hostname.sh warn=False"

在这里插入图片描述

script模块

功能:可将管理机器本地脚本远程传输到被管理机器上执行,既只需要在管理机器本地创建脚本即可~

应用案例:

1、远程执行脚本

[root@absible ~]# echo -e "pwd\nhostname" > /root/local_hostname.sh    #在管理节点上创建脚本
[root@absible ~]# cat local_hostname.sh        #查看脚本内容
pwd
hostname
[root@absible ~]# chmod +x local_hostname.sh    #执行授权
[root@absible ~]# ls
anaconda-ks.cfg  danwangka-ens33.sh  local_hostname.sh
[root@absible ~]# ansible xuyuhan -m script -a "local_hostname.sh"     #远程批量执行脚本,且在客户端上不需要存在该脚本

在这里插入图片描述

copy模块

应用案例:

1、复制管理机器文件数据到被管理主机

在这里插入图片描述

先创建远程copy需要的用户、用户组~

[root@absible ~]# ansible xuyuhan -m shell -a "useradd learn_ansible2"
192.168.230.101 | CHANGED | rc=0 >>

192.168.230.108 | CHANGED | rc=0 >>

192.168.230.110 | CHANGED | rc=0 >>

[root@absible ~]# ansible xuyuhan -m shell -a "id learn_ansible2"
192.168.230.101 | CHANGED | rc=0 >>
uid=500(learn_ansible2) gid=500(learn_ansible2)=500(learn_ansible2)
192.168.230.108 | CHANGED | rc=0 >>
uid=1000(learn_ansible2) gid=1000(learn_ansible2)=1000(learn_ansible2)
192.168.230.110 | CHANGED | rc=0 >>
uid=1000(learn_ansible2) gid=1000(learn_ansible2)=1000(learn_ansible2)
[root@absible ~]#

批量拷贝文件分发到被控主机上

[root@absible ~]# ansible xuyuhan -m copy -a "src=/etc/hosts dest=/root/copy_hosts owner=learn_ansible2 group=learn_ansible2 mode=0666"

在这里插入图片描述
在这里插入图片描述

2、远程批量复制文件,备份,追加内容

先准备好文件

[root@absible ~]# ansible xuyuhan -m shell -a "echo 今天天气真不错  > /root/day.txt"
192.168.230.101 | CHANGED | rc=0 >>

192.168.230.108 | CHANGED | rc=0 >>

192.168.230.110 | CHANGED | rc=0 >>

[root@absible ~]# ansible xuyuhan -m shell -a "cat /root/day.txt"
192.168.230.101 | CHANGED | rc=0 >>
今天天气真不错
192.168.230.108 | CHANGED | rc=0 >>
今天天气真不错
192.168.230.110 | CHANGED | rc=0 >>
今天天气真不错
[root@absible ~]#

再覆盖原有内容,并且对目标机器的源数据做一个备份~

[root@absible ~]# ansible xuyuhan -m copy -a "content='但是明天可能要下雨了' dest=/root/day.txt backup=yes"

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

file模块

在这里插入图片描述
应用案例:

1、远程批量创建文件夹,并设置权限为666

[root@absible ~]# ansible xuyuhan -m file -a "dest=/root/file_test mode=666 state=directory"

在这里插入图片描述

[root@absible ~]# ansible xuyuhan -a "ls -l /root/file_test"    #查看刚才创建的文件夹
192.168.230.101 | CHANGED | rc=0 >>
总用量 0
192.168.230.108 | CHANGED | rc=0 >>
总用量 0
192.168.230.110 | CHANGED | rc=0 >>
总用量 0

2、远程批量生成文件

在这里插入图片描述

3、远程创建软连接

[root@absible ~]# ansible xuyuhan -m file -a "src=/etc/hosts dest=/root/file_hosts_link state=link"   #src=源文件绝对路径 dest=软连接绝对路径

在这里插入图片描述

[root@absible ~]# ansible xuyuhan  -a "ls -l /root/file_hosts_link"

在这里插入图片描述

yum模块

我这里已经提前安装了nginx,所以先来卸载

[root@absible ~]# ansible xuyuhan -m shell -a "rpm -qa nginx warn=false"   #批量检查nginx是否安装了

在这里插入图片描述

1、批量卸载软件 nginx

[root@absible ~]# ansible xuyuhan -m yum -a "name=nginx state=absent"

在这里插入图片描述
在这里插入图片描述

2、批量安装软件nignx

[root@absible ~]# ansible xuyuhan -m yum -a "name=nginx state=installed"

在这里插入图片描述

3、批量打开软件服务(nginx):

[root@absible ~]# ansible xuyuhan -m shell -a "systemctl start nginx"

Centos7、8需要安装下net-tools软件~

[root@absible ~]# ansible xuyuhan -m yum -a "name=net-tools state=installed"

[root@absible ~]# ansible xuyuhan -m shell -a "netstat -tunlp | grep nginx"  #

[root@absible ~]# ansible xuyuhan -m shell -a "netstat -tunlp | grep 80"

在这里插入图片描述

在这里插入图片描述

4、批量升级软件包

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

playbook应用(剧本)

1、playbook命令规范

在这里插入图片描述

2.playbook与shell脚本实现对比

在这里插入图片描述

3、playbook剧本组成规范

在这里插入图片描述

4、playbook之hosts部分

在这里插入图片描述
在这里插入图片描述

5、playbook之tasks部分

在这里插入图片描述
在这里插入图片描述

yaml语法规范

在这里插入图片描述
在这里插入图片描述

1、playbook编写规范

在这里插入图片描述
左边不对齐检查时报错!
在这里插入图片描述
在这里插入图片描述
这是对齐以后的校对
在这里插入图片描述

 # install nginx yaml
 - hosts: xuyuhan
 - remote_user: root
   tasks:
    - name: Install nginx service
      yum: name=nginx state=installed

    - name: Copy Nignx.conf to every_server
      copy: src=/root/nginx.conf
            dest=/etc/nginx/ mode=0644

    - name: 启动nginx服务
      shell: systemctl start nginx


2、playbook执行

2.1基本执行语法

ansible-playbook nginx.yaml    #可使用绝对相对路径

2.2查看剧本命令的帮助信息

ansible-playbook -h

在这里插入图片描述

1、编写一个nginx安装playbook

template(模板)

在这里插入图片描述

role(角色)

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

且听风吟tmj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值