ansible的安装与介绍、host-pattern格式、ansible的command模块、ansible的shell模块、ansible的script模块、ansible的copy模块

一、ansible的安装与介绍

  ansible需要安装在管控机上

  首先安装wget(如果机器上有可以忽略)

  下载安装wget

yum install -y wget

  将epel源下载安装到本地

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

  安装ansible

yum install -y ansible

  

  ansible的命令格式

Usage: ansible <host-pattern> [options]

-a MODULE_ARGS,                #参数模块
-C, --check                            #白跑
-f FORKS,    --forks=FORKS    #指定并发,默认是5个
--list-hosts                            #列出主机
-m MODULE_NAME                #模块名称
--syntax-check                      #检查语法
-k                                        #密码

  测试下主控机和被控机是否可以连接通

ansible 192.168.226.101 -m ping #单独机器的ping

  其中ping走的是ICMP协议

  查看ansible生成的文件

rpm -ql ansible | more 

查看ansible生成的文件

/etc/ansible
/etc/ansible/ansible.cfg #配置文件
/etc/ansible/hosts
/etc/ansible/roles #空文件夹

其余的文件后面都是带有bin的都是一些二进制文件可以不看

  我们ping一个主机可以用ip地址的方法,多个呢不能用逗号把主机ip写进去吧(当然如果主机少的话可以这么干),接下来我们就需要用到上面的/etc/ansible/hosts中的hosts文件了,我们把被控机的IP写入进这个文件中

编辑
vi /etc/ansible/hosts

写入主机的ip地址在# Ex 1: Ungrouped hosts, specify before any group headers.下面

然后我们想ping所有的被控主机的时候就直接使用ansible all -m ping然后得到下图的结果

但是如果有很多台,只想要ping其中的几台呢?
那就要需要分组了

比如说我想看ping下web组的机器可以用

ansible web -m ping

这样写的方便管理

我们如果要用管控机连接被管控机呢,需要

一、ssh [email protected]地址
二、输入密码

是不是十分繁琐,如果机器少还行

其实ssh的连接方式有两种上面的连接方式是第一种

第二种就是密钥

  密钥的生成方式:(公钥和私钥)

ssh-keygen(一直回车就可以)

  使用公钥

ssh-copy-id    用户名@IP地址

当出现以下信息就代表成功了

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh ‘[email protected]你要连接的IP地址‘"
and check to make sure that only the key(s) you wanted were added.

直接用  ssh [email protected]地址  连接主机

我们上面说到  ansible all -m ping 是全部机器

但是我如果想看两个组之间有么有相同的机器怎么办,要知道数学上有交集、并集和差集的当然这里也有

多个组的并集
ansible web,db -m ping
或者
ansible ‘web:db‘ -m ping

多个组的交集
ansible ‘web:&db‘ -m ping

多个组的差集
ansible ‘web:!db‘ -m ping

其中括起组名的必须是单引号 ‘‘ 

二、ansible-doc  命令格式

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

三、ansible的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会执行

在db组的机器上新建一个用户ansible db -m command -a "useradd 用户名"因为要设置密码很繁琐所以直接用ansible db -m shell -a "echo ‘密码‘ | passwd --stdin 用户名"

四、ansible的shell命令

shell命令支持特殊字符

<、>、|、&、$、

ansible web -m shell -a "echo ‘1234‘ |passwd --stdin alex"
ansible web -m shell -a "chdir=/tmp pwd" shabang
ansible 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文件

五、ansible的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" #判断被控机上的文件

六、ansible的copy命令

backup #创建一个备份文件,以时间戳结尾
content #直接往文件里面写内容
dest #目标地址
group #属组
mode# 文件的权限 W 2 R 4 X 1
owner #属主
src #源文件,直接写目录,则复制整个目录,如果目录后面以/结尾,则复制的目录下的所有文件
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=alex mode=755"# 复制本地文件到远程主机,并指定属组和权限
ansible web -m copy -a "src=/etc/init.d dest=/tmp backup=yes group=alex mode=755" #复制本地的目录到远程主机,修改目录权限,则目录里面的文件也会跟着变更
ansible web -m copy -a "src=/etc/init.d/ dest=/tmp backup=yes group=alex mode=755" #复制本地目录下的所有文件,
ansible web -m copy -a "content=‘大弦嘈嘈如急雨,小弦切切如私语,嘈嘈切切错 杂弹,大珠小珠落玉盘‘ dest=/tmp/b" #直接往文件里面写内容,覆盖写,慎用

原文地址:https://www.cnblogs.com/guchenxu/p/10816941.html

时间: 2024-10-10 07:02:20

ansible的安装与介绍、host-pattern格式、ansible的command模块、ansible的shell模块、ansible的script模块、ansible的copy模块的相关文章

Ansible的安装及常用模块

简介 Ansible 基于 Python 语言实现,由 Paramiko 和 PyYAML 两个关键模块构建. Ansible 特点: 1.部署简单,只需在主控端部署 Ansible 环境,被控端无需做任何操作.2.默认使用 SSH(Secure Shell)协议对设备进行管理.3.主从集中化管理.4.配置简单.功能强大.扩展性强.5.支持 API 及自定义模块,可通过 Python 轻松扩展.6.通过 Playbooks 来定制强大的配置.状态管理.7.对云计算平台.大数据都有很好的支持.8.

Ansible的安装、配置及常用模块介绍

Ansible的安装.配置及常用模块介绍 ansible安装方式 1. ansible安装常用两种方式,yum安装和pip程序安装 这里提供二种安装方式,任选一种即可: 1.使用yum安装 yum install epel-release -y yum install ansible –y 2. 使用pip(python的包管理模块)安装 pip install ansible   #如果没pip,需先安装pip.yum可直接安装: yum install python-pip pip inst

ansible基础—安装与常用模块

ansible介绍: ansible是一个基于python开发的轻量级自动化运维管理工具,可以用来批量执行命令,安装程序,支持playbook编排.它通过ssh协议来连接主机,省去了在每一台主机安装客户端的麻烦,相对比puppet和saltstack,显得更为简单和轻量. ansible命令参数: Usage: ansible <host-pattern> [options] Options:   -a MODULE_ARGS, --args=MODULE_ARGS              

ansible配置安装详解

   前段时间把线上服务器域名的代码存放目录,日志目录,以及常用(nginx,php,nodejs,golang等)服务的安装目录都调整到统一的路径下,为方便使用ansible进行批量管理.以下是我在本地测试环境部署安装ansible的文档,让大家参考以下: 一.基础介绍 ========================================================================================== 1.简介 ansible是新出现的自动化运维

ansible使用一(ansible的安装及ansible常用模块的使用)

1.ansible概述        Ansible是一款基于Python开发的自动化运维工具,它不需要安装客户端,使用SSH进行通信,同时可支持系统账号认证或秘钥认证,也支持windows客户端. Ansible主要组成部分: (1)ANSIBLE PLAYBOOKS:任务剧本(任务集),编排定义Ansible任务集的配置文件,由Ansible顺序依次执行,通常是JSON格式的YML文件: (2)INVENTORY:Ansible管理主机的清单: (3)MODULES:Ansible执行命令的

运维自动化之ansible playbook安装mysql

上次介绍了如何使用ansible playbook安装zabbix客户端(http://dl528888.blog.51cto.com/2382721/1436745),这次介绍一下如何使用playbook安装mysql. 下面是安装mysql的信息: mysql_basedir: /data/mysql/basedir                    源码目录 mysql_datadir: /data/mysql/datadir                    数据目录 mysql

运维自动化之ansible playbook安装ruby环境

本来不想打算写安装ruby的,但看几个puppet的群里有人对安装ruby比较茫然,所以这里简单介绍一下如何安装ruby. ps:话说现在也就gitlab.capistrano.puppet等软件使用ruby,最新2010年的软件好的都是python了,比如ansible.salt等. 下面是安装ruby的信息: ruby_version: 1.9.3 ruby_dir: /usr/local gem_version: 1.8.23 bundle_version: 1.6.3 可以看到ruby的

运维自动化之ansible的安装与使用(包括模块与playbook使用)

什么是ansible? ansible是个什么东西呢?官方的title是"Ansible is Simple IT Automation"--简单的自动化IT运维管理工具.这个工具的目标有这么几项:让我们自动化部署APP:自动化管理配置项:自动化的持续交付:自动化的(AWS)云服务管理.基于Python开发,可实现对多台服务器进行批量配置.程序的部署及指令的运行.大大减少了在运维工程中的工作量. ansible是基于模块工作的,本身没有批量部署的能力.真正具有批量部署的是ansible

运维自动化之ansible playbook安装node环境

现在介绍如何使用ansible安装node. 下面是安装node的信息: node_dir: /data node_version: 0.10.21 node_port: 3301 可以看到node的版本是0.10.21,测试的node应用服务监听3301端口 备注:此playbook仅能对centos或者redhat的6.x版本进行安装. 下面是安装node的playbook结构 09:33:16 # tree node_* node_delete ├── files ├── handlers