ansible的特性:基于Python语言实现,由paramiko,PyYAML和jinjia2三个关键模块 部署简单,agentless
 默认使用ssh协议
        (1) 基于秘钥认证方式
        (2)在inventory文件中配置账号密码
主从模式:
        master:ansible,ssh client
        slave:ssh server

支持自定义模块:支持各种编程语言
支持Playbook
基于“模块”完成各种“任务”

首先,安装ansible,在管理端和被管理端配置秘钥信息;

/etc/ansible/hosts文件下,配置被管理端的组信息。

yum list all *ansible*
yum info ansible
yum install ansible -y
rpm -ql ansible

安装依赖于epel源
配置文件:/etc/ansible/ansible.cfg
invertory:/etc/ansible/hosts

ls /etc/ansible   
ansible.cfg hosts roles

ansible.cfg 是 Ansible 工具的配置文件;
hosts 用来配置被管理的机器;
roles 是一个目录,playbook 将使用它
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1、Ansible 管理机与被管理机做秘钥认证
ssh-keygen        # 生成秘钥
ssh-copy-id -i /root/.ssh/id_rsa.pub "-p 22 root@ip地址"     # 将公钥写入被管理机
ssh root@ip地址 'ntpdate 另一个ip地址'               #同步时间和另一个服务器时间相同。
2、hosts 文件添加被管理机
vim /etc/ansible/hosts

[Client]
192.168.163.2
192.168.163.3
[webservers]
192.168.163.2
[dbservers]
192.168.163.3

如何查看模块帮助;

man ansible-doc
ansible-doc -l 查看ansible支持的所有的模块。
ansible-doc -s MODULE_NAME 查看某些模块如何使用的。
ansible-doc -s yum 查看yum如何使用
ansible-doc -s command

ansible命令应用基础:
语法:ansible <host-pattern> [-f forks] [-m module_name] [-a args]
host-pattern:对哪些主机生效。
-f forks:一批处理多少主机,启动的并发线程数。
-m module_name:要使用的模块。
-a args:模块特有的参数。

一.常见模块:
ansible-doc -s MODULE_NAME

1) command:命令模块,默认模块,用于远程执行命令
ansible all -a 'data'
ansible 192.168.133.2 -m command -a 'data'    #出现success表示成功。
192.168.12.129 | SUCCESS |rc=0 >>
TUE JUN 23 16:56:41 CST 2018

ansible webservers -m command -a 'data'
ansible all -m command -a 'data'
ansible 192.168.133.2 -m command -a 'tail -2 /etc/passwd'

2)cron模块

cron:
    state:
        present:安装
        absent:移除

ansible-doc -s cron:查看如何使用参数,该参数-a后面添加(minute,job,name皆为参数的内容。)
比如在webservers集群中写个定时计划任务:每隔10分钟输出hello

ansible webservers -m cron -a 'minute="*/10" job="/bin/echo hello" name="test cron job"'        
ansible webservers -a 'crontab -l'  查看同步任务列表
ansible webservers -m cron -a 'minute="*/10" job="/bin/echo hello" name="test cron job" state=absent'
移除同步任务。默认没有state是安装。

3)user用户模块
name=:指明创建用户的名字。
ansible-doc -s user
ansible all -m user -a 'name="user"'
ansible all -m user -a 'name="user" state=absent'

4)group模块
ansible-doc -s group
ansible webservers -m group -a 'name=mysql gid=306 system=yes'
ansible webservers -m user -a 'name=mysql uid=306 system=yes group=mysql'

5)copy文件模块
src=:定义本地源文件路径
dest=:定义远程目标文件路径
content:取代src=,表示直接用此处生成的信息生成为目标文件的内容。
ansible all -m copy -a 'src=/etc/fstab dest=/tmp/fstab.ansible ower=root mode=640'
ansible all -m copy -a 'connect="Hello Ansible\nHi Mageedu" dest=/tmp/test.ansible'  \n是转译。

6)file:设定文件属性
path=:指定文件路径,可以使用name或dest来替换

创建文件符号链接:
    src=:指明源文件
    path=:指明符号链接文件路径

ansible all -m file -a 'ower=mysql group=mysql mode=644 path=/tmp/fstab.ansible'
创建文件链接:
ansible all -m file -a 'path=/tmp/fstab.link src=/tmp/fastab.ansible state=link'

7)ping:测试主机是否能连接
ansible -a 'ping'

8)service:指定运行状态
enabled=:是否开机自动启动,取值为true或者false
name=:服务名称
state=:状态,取值为started,stopped,restarted

ansible-doc -s service
ansible webservers -a 'service httpd status'
ansible webservers -a 'chkconfig --list httpd'
ansible webservers -m service -a 'enabled=true name=httpd state=started'

9)shell:在远程主机上运行命令
尤其是用到管道等功能的复杂命令时候。
ansible all -m user -a 'name=user1'
ansible all -m command -a 'echo passwd |passwd --stdin user1'
在远程主机上查看发现密码没改变,是因为他默认可能认为是本机的命令
ansible all -m shell -a 'echo passwd |passwd --stdin user1'

10)script:本地脚本命令复制到远程并且运行之。该shell脚本只支持相对路径

cat test.sh
#!/bin/bash
echo "hello ansible" > /tmp/script.ansible
useradd user2
cp -r /tmp/test.sh ./ 该shell脚本只支持相对路径
vim /tmp/test.sh
chmod +x /tmp/test.sh
ansible all -m script -a 'test.sh'

11)yum:安装程序包
name=:指明要安装的程序包,可以带上版本号
state=:present,lastest表示安装,absent表示卸载
ansible all -m yum -a 'name=zsh'
ansible all -m yum -a 'name=zsh state=absent'

12)setup:收集远程主机的facts
每个被管理的节点在接受并运行管理命令之前,会将自己的主机相关信息,如操作系统,ip地址等报告给远程的ansible主机。
ansible 192.168.133.4 -m setup    
nginx配置文件中有个work_processes=物理核心数(processor_core * processor_count)-1或者-2

13)get_url 模块(实现在远程主机下载指定 URL 到本地,支持 sha256sum 文件校验)
ansible Client -m get_utl -a "url=http://www.baidu.com dest=/tmp/index.html mode=0440 force=yes"

14) stat 模块(获取远程文件状态信息,atime/ctime/mtime/md5/uid/gid 等信息)
ansible Client -m stat -a "path=/etc/syctl.conf"

15) mount 模块(远程主机分区挂载)
ansible Client -m mount -a "name=/mnt/data src=/dev/sd0 fstype=ext4 opts=ro state=present"

综合
ansible-doc -s 模块名

command
    -a 'COMMAND'
user
    -a 'name= state={present|absent}' system= uid= '
group
    -a 'name= gid= state= system='
cron
    -a 'name= minute= hour= day= mounth= weekday= job= user= state='
copy
    -a 'dest= src= mode= owner= group= '
file
    -a 'path= mode= owner= group= state={directory|link|present|absent} src='
ping
    无参数
yum
    -a 'name= state={present|lastest|absent}'
service
    -a 'name- state={started|stopped|restarted} enabled='
shell
    -a 'COMMAND'
script
    -a '/path/to/script'
setup

ansible部署的更多相关文章

  1. 001.Ansible部署RHCS存储集群

    一 前期准备 1.1 前置条件 至少有三个不同的主机运行monitor (MON)节点: 至少三个直接存储(非外部SAN硬件)的OSD节点主: 至少两个不同的manager (MGR)节点: 如果使用 ...

  2. 使用Ansible部署etcd 3.2高可用集群

    之前写过一篇手动搭建etcd 3.1集群的文章<etcd 3.1 高可用集群搭建>,最近要初始化一套新的环境,考虑用ansible自动化部署整套环境, 先从部署etcd 3.2集群开始. ...

  3. ansible部署,规划

    部署管理服务器 第一步:先检查有没有ssh服务 [root@iZm5eeyc1al5vzh8bo57zyZ ~]# rpm -qf /etc/init.d/sshd openssh-server-5. ...

  4. CentOS7.5 -- Ansible部署与应用

    第1章 Ansible概述 Ansible是一个配置管理系统configuration management system python 语言是运维人员必须会的语言 ansible 是一个基于pyth ...

  5. 使用ansible部署CDH 5.15.1大数据集群

    使用ansible离线部署CDH 5.15.1大数据集群 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在此之前,我之前分享过使用shell自定义脚本部署大数据集群,不管是部署CD ...

  6. SSH与ansible 部署方法与核心模块简介

    SSH与ansible 部署方法 部署环境 管理服务器 172.16.1.61 NFS服务器 172.16.1.31 备份服务器 172.16.1.41 1检查SSH服务是否运行并开启服务 netst ...

  7. 003 ansible部署ceph集群

    介绍:在上一次的deploy部署ceph,虽然出了结果,最后的结果并没有满足最初的目的,现在尝试使用ansible部署一遍,看是否会有问题 一.环境准备 ceph1充当部署节点,ceph2,ceph3 ...

  8. k8s ansible部署部署文档

    一:基础系统准备 ubuntu 1804----> root密码:123456 主要操作:   1.更改网卡名称为eth0: # vim /etc/default/grub GRUB_CMDLI ...

  9. 使用Ansible部署openstack平台

    使用Ansible部署openstack平台 本周没啥博客水了,就放个云计算的作业上来吧(偷个懒) 案例描述 1.了解高可用OpenStack平台架构 2.了解Ansible部署工具的使用 3.使用A ...

  10. rh358 004 bind反向,转发,主从,各种资源记录 unbound ansible部署bind unbound

    通过bind实现正向,反向,转发,主从,各种资源记录 7> 部署反向解析 从ip解析到fqdn vim /etc/named.conf zone "250.25.172.in-addr ...

随机推荐

  1. 在webconfig放置固定值

    通常的,为了布置到服务器后修改的方便通常把一些会改变的值放在webconfig: 首先在web.ocnfig中放入如下值 <appSettings> <add key="A ...

  2. Sublime Text3括号配对与代码包围效果BracketHighlighter

    就这么看json等配置文件,太难了,我们需要括号匹配插件BracketHighlighter,但是装完以后只有下划线提示不明显,需要配置     Bracket Settings-Default 文件 ...

  3. OCR/Vote disk 维护操作: (添加/删除/替换/移动) (文档 ID 1674859.1)

    适用于: Oracle Database - Enterprise Edition - 版本 10.2.0.1 到 11.2.0.1.0 [发行版 10.2 到 11.2]本文档所含信息适用于所有平台 ...

  4. 1.JOIN和UNION区别

    1.JOIN和UNION区别join 是两张表做交连后里面条件相同的部分记录产生一个记录集,union是产生的两个记录集(字段要一样的)并在一起,成为一个新的记录集 . JOIN用于按照ON条件联接两 ...

  5. MATLAB——解数独

    数独 数独是一种逻辑游戏,玩家需要根据9x9盘面的已知数字,推理出剩余所有空格的数字,并满足每一行.每一列和每个粗线宫(3x3)内均含1~9,不重复. MATLAB中有关函数 M = dlmread( ...

  6. HTML5拖放(drag和drog)作品

    <!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...

  7. javaEE(2)_http协议

    一.HTTP协议简介 1.客户端连上web服务器后,若想获得web服务器中的某个web资源,需遵守一定的通讯格式,HTTP协议用于定义客户端与web服务器通迅的格式.dos环境下可直接通过telnet ...

  8. window nodejs 版本管理器 nvm-windows 教程

    先去https://github.com/coreybutler/nvm-windows/releases 下载nvm-setup.zip 安装 安装的过程中会提示是否获取nodejs的管理权限,点确 ...

  9. mongodb详细教程

    转自:https://www.cnblogs.com/liruihuan/tag/MongoDB/

  10. docker系列之分区挂载和数据卷

    容器中的文件系统是独立的, 一旦容器被删除, 则文件系统也会被删除. 如果想容器和实体机在文件系统层面打通, 可以把指定目录挂载到容器当中: docker run -d -p 5000:22 -v / ...