博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Ansible--安装,命令格式, ssh, command, shell, script, copy
阅读量:4987 次
发布时间:2019-06-12

本文共 3582 字,大约阅读时间需要 11 分钟。

ansible

是一个基于python开发的自动化运维工具,可以实现批量系统配置,批量程序部署,批量运行命令

需要管控机和被管控机的时间同步一致, 配置相同的时间服务器即可

一.安装

1.安装wget

需要用到wget命令,如果系统是最小化安装的,那么可能需要先安装wget

yum install -y wget

2.将epel源安装下载到本地

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
3.安装ansible
yum install -y ansible

成功之后可查看生成的文件

rpm -ql ansible|more# 其中/etc/ansible/ansible.cfg #配置文件/etc/ansible/roles #空文件夹

二.命令格式

ansible -h # 查看命令格式Usage: ansible 
[options]Options: -a MODULE_ARGS, #模块参数 -C, --check # 尝试执行,但是不做任何改变 -f FORKS, --forks=FORKS #指定并发,默认5个 --list-hosts #列出主机 -m MODULE_NAME# 模块名称 --syntax-check #检查语法 -k #密码

ping命令用到的协议是ICMP,ansible底层是用ssh来实现的

ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息。它是一个非常重要的协议,它对于网络安全具有极其重要的意义。它是TCP/IP协议族的一个子协议,属于网络层协议,主要用于在主机与路由器之间传递控制信息,包括报告错误、交换受限控制和状态信息等。当遇到IP数据无法访问目标、IP路由器无法按当前的传输速率转发数据包等情况时,会自动发送ICMP消息。ICMP报文在IP帧结构的首部协议类型字段(Protocol 8bit)的值=1.

要先配置/etc/ansible/hosts

vi /etc/ansible/hosts## www[001:006].example.com  代表 www001-www006(包含)

1547033-20190505193125582-795309619.png

1.ansible的ping

可用来探测某几台机器是否在线

ansible 192.168.226.101 -m ping #单独机器的pingansible 192.168.226.101,192.168.226.102 -m ping #多个机器的pingansible all -m ping #全部机器ansible web -m ping #单个的组ansible web,db -m ping #多个组的并集ansible 'web:&db' -m ping #多个组的交集ansible 'web:!db' -m ping #多个组的差集,在前面但是不在后面

可能会出现的问题

1.没有在/etc/ansible/hosts文件中配置被管控机的ip

1547033-20190505193216521-1749156637.png

2.要用命令ansible 192.168.227.146 -m ping -k见下面ssh

1547033-20190505193235507-733896222.png

成功后提示:

1547033-20190505193252813-860963868.png

2.ssh

1.生成ssh密钥公钥对

ssh-keygen

2.连接到目标,之后就可通过ssh来连接了

ssh-copy-id root@192.168.226.101

3.host-pattern

  • 单个的ip地址
  • 多个的ip地址,用,分割
  • 单个组
  • 多个组
    • 并集 web,db  或者 ‘web:db’
    • 交集 ‘web:&db’
    • 差集 ‘web:!db’
  • 全部 all表示

4.ansible-doc

ansible-doc [-l|-F|-s] [options] [-t 
] [plugin] -j #以json的方式返回数据 -l, --list #列出所有的模块 -s, --snippet #以片段式显示模块信息 #直接查看完整信息

查看这些命令详细信息

ansible-doc -h

三.command

ansible web -m command -a "pwd"ansible web -m command -a "ls"ansible web -m command -a "chdir=/tmp pwd" #切换目录并执行命令ansible web -m command -a "creates=/tmp pwd" #因为tmp目录存在,pwd不会执行ansible web -m command -a "creates=/tmp2 pwd" #因为tmp2不存在,pwd执行ansible web -m command -a "removes=/tmp2 pwd" #因为tmp2不存在pwd不执行ansible web -m command -a "removes=/tmp pwd" #因为tmp目录存在,pwd会执行echo "1234" |passwd --stdin tom #设置用户的密码

四.shell 支持特殊字符 <>|&$;

linux中的文件头

python文件头#!/usr/bin/env python# -*- coding:utf-8 -*-shell脚本文件头#!/bin/bash

命令:

ansible web -m shell -a "echo '1234' |passwd --stdin tom"ansible web -m shell -a "chdir=/tmp pwd" shabangansible 192.168.226.101 -m shell -a "bash a.sh" #执行shell脚本ansible 192.168.226.101 -m shell -a "/root/a.sh" # 执行shell脚本,文件要有执行的权限ansible 192.168.226.101 -m shell -a "/root/a.py" #执行Python文件

五.script 执行本地的脚本

ansible db -m script -a "/root/a.sh" #执行本地的文件,管控机的文件ansible db -m script -a "creates=/root/a.sh /root/a.sh" # 判断被控机上的文件是否存在,如果不存在,就执行,如果存在,就跳过ansible db -m script -a "creates=/tmp /root/a.sh" #判断被控机上的文件

六.copy

backup #创建一个备份文件,以时间戳结尾content #直接往文件里面写内容dest #目标地址group #属组mode# 文件的权限 owner #属主src #源地址 直接写目录,则复制整个目录,如果目录后面以/结尾,则复制的目录下的所有文件owner # 属主group # 属组mode # 权限ansible web -m copy -a "src=/etc/fstab dest=/tmp/f" #复制本地文件到远程主机,并修改文件名,多次执行不会改变,因为checksum值是一样的ansible web -m copy -a "src=a.sh dest=/tmp/a.sh backup=yes" #复制本地文件,并备份ansible web -m copy -a "src=a.sh dest=/tmp/a.sh backup=yes group=tom mode=755"# 复制本地文件到远程主机,并指定属组和权限ansible web -m copy -a "src=/etc/init.d dest=/tmp backup=yes group=tom mode=755" #复制本地的目录到远程主机,修改目录权限,则目录里面的文件也会跟着变更ansible web -m copy -a "src=/etc/init.d/ dest=/tmp backup=yes group=tom mode=755" #复制本地目录下的所有文件,ansible web -m copy -a "content='大弦嘈嘈如急雨,小弦切切如私语,嘈嘈切切错 杂弹,大珠小珠落玉盘' dest=/tmp/b" #直接往文件里面写内容,覆盖写,慎用

转载于:https://www.cnblogs.com/robertx/p/10815734.html

你可能感兴趣的文章
Spring Bean单例与线程安全
查看>>
EasyUI datagrid.getSelections 没有返回正确的选择行数
查看>>
分享一个随机重排函数(C#)
查看>>
Asp.Net Core在CentOS部署与注意
查看>>
自反+递归 实现评论的无限引用
查看>>
新闻发布系统
查看>>
NOIP提高组2016 D1T2 【天天爱跑步】
查看>>
数据结构基础(19) --堆与堆排序
查看>>
HTML基础
查看>>
Window通过cmd查看端口占用、相应进程、杀死进程
查看>>
Exp4 恶意代码分析 _20151220
查看>>
Webbrowser 取消下载提示框
查看>>
javascript 在线压缩工具
查看>>
BootStrap的栅格系统的基本写法(布局)
查看>>
移动端开发
查看>>
Excel如何取消显示分页虚线
查看>>
博弈论习题
查看>>
B题 hdu 1407 测试你是否和LTC水平一样高
查看>>
cglib 介绍 原理 使用 demo examples 【转】
查看>>
Ubuntu下安装LAMP及phpmyadmin
查看>>