一、Ansible简介

ansible是新出现的开源的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。

ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包括:

(1)、connection plugins:连接插件,Ansible和Host通信使用,负责和被监控端实现通信;

(2)、host inventory:记录了每一个由Ansible管理的主机信息,信息包括ssh端口,root帐号密码,ip地址等等。可以通过file来加载,可以通过CMDB加载;指定操作的主机,是一个配置文件里面定义监控的主机;

(3)、各种模块核心模块、command模块、自定义模块;

Core Modules:Ansible执行任何管理任务都不是由Ansible自己完成,而是由核心模块完成;Ansible管理主机之前,先调用core Modules中的模块,然后指明管理Host Lnventory中的主机,就可以完成管理主机。

Custom Modules:自定义模块,完成Ansible核心模块无法完成的功能,此模块支持任何语言编写。

(4)、借助于插件完成记录日志邮件等功能;

(5)、playbooks:剧本执行多个任务时,非必需可以让节点一次性运行多个任务。

(6)、Ansible:Ansible的核心程序

ansible的特点:

(一)批量管理工具

(二)模块

(三)python

(四)无终端,是基于ssh实现管理的

(五)也支持主从模式

(六)也支持playbook

Ansible的优点:

(1)Stupied Simple ,上手简单,学习曲线平滑

(2)SSH by default ,安全,无需安装客户端

(3)配置简单、功能强大、扩展性强

(4)支持API(应用程序接口)及自定义模块,可通过Python轻松扩展

(5)通过Playbooks来定制强大的配置、状态管理

(6)提供一个功能强大、操作性强的Web管理界面和REST API接口——AWX平台(收费产品,一般很少用)

(7)幂等性:一种操作重复多次结果相同

二、ansible的安装

1、安装

yum install epel-release           #需要安装epel源

yum install ansible -y

2、查看ansible的版本信息

ansible --version

3、查看ansible配置文件

[root@ren5 ~]# rpm -qc ansible

/etc/ansible/ansible.cfg

/etc/ansible/hosts

4、调用模块(python

paramiko   #模拟ssh协议批量管理主机

jinja2            #模板语言,主要用来传递变量

yaml             #相当于是一种编程语言

5、控制方式:

(1)免密钥:key-gen

server: ssh-keygen

scp id_rsa.pub root@192.168.254.25:/root/.ssh/authorized_keys

(2)用户密码:

参数形式:ansible_ssh_user=root; ansible_ssh_pass=root ansible_ssh_port=22

host inventory:记录着客户端的ip信息

[root@ren5 ~]# vim /etc/ansible/hosts

在文件最后添加:

[test_ren1]

192.168.11.4 ansible_ssh_user=root ansible_ssh_pass=0304 ansible_ssh_port=22

192.168.11.6 ansible_ssh_user=root ansible_ssh_pass=0304 ansible_ssh_port=22

注意:/root/.ssh/known_hosts需在此文件中有ssh连接的记录才可

或者取消/etc/ansible/ansible.cfg文件中#host_key_checking = False的注释

如果用了密钥登录,则密码登录无效;也就是说这两种方式无法混合使用

6、调用ansible的三种模式:

hoc:命令行

playbooks:剧本|脚本

roles:角色

三、Ansible使用基本格式

1、使用格式

[root@ren5 ~]# ansible

Usage: ansible <host-pattern> [options]

2、参数:

-m:(--module-name=MODULE_NAME)指定模块名称

-a:(--args=MODULE_ARGS)指定模块的具体参数

-s:以sudo的方式运行操作

-i:(--inventory=INVENTORY)指定被管理节点的主机列表

-f:(--forks=FORKS)一批连接几个主机进行操作(默认是5个主机,最高255)控制并发数

线程是最小的调度单位,进程是最小的管理单元

ansible-doc -l                          #查看所支持的模块

ansible-doc -s MODEL_NAME   #模块的具体用法和参数

ansible all --list-hosts    #查看所有主机

四、ansible管理节点的三种方法

1、指定主机组名

[root@ren5 ~]# ansible test_ren1 -a "ip a"         #默认调用command模块

2、指定一个特定IP

[root@ren5 ~]# ansible 192.168.11.4 -a "ls"

3、使用all

[root@ren5 ~]# ansible all -a "date"

五、配置文件

ansible配置文件:(/etc/ansible/ansible.cfg)

14#inventory      = /etc/ansible/hosts                主机管理资产清单

15#library        = /usr/share/my_modules/         ansible操作的动作,无论是本地或者远程,都使用一小段代码来执行,这小段代码称之为模块,这个library就是用来存放这些模块的路径

16#module_utils   = /usr/share/my_module_utils/

17#remote_tmp     = ~/.ansible/tmp

18#local_tmp      = ~/.ansible/tmp

20#forks          = 5                            ansible默认操作主机的并发数

21#poll_interval  = 15

22#sudo_user      = root                    这是默认的执行命令的用户,也可以在playbook中重新设置这个参数

23#ask_sudo_pass = True                 用来控制Ansible playbook 在执行sudo之前是否询问sudo密码.默认为no

24#ask_pass      = True                     Ansible 剧本playbook 是否会自动默认弹出弹出密码.默认为no

25#transport      = smart

26#remote_port    = 22                     这个指定连接被管理节点的端口,默认是22,除非设置了特殊的ssh端口

27#module_lang    = C                       默认模块和系统之间通信的计算机语言,默认为’C’语言

28#module_set_locale = False

61#host_key_checking = False            这是设置是否检查ssh秘钥,可以设置为False和True

103#timeout = 10                                ssh连接超时时间

111#log_path = /var/log/ansible.log        ansible默认是不记录日志的,如果想把ansible系统输出的日志存放到文件中可以开启这个选项

136#private_key_file = /path/to/file         使用ssh公钥私钥登录系统的时候,使用的秘钥路径

.......

还有更多的配置项,大家可以参考官方文档,如下:             http://docs.ansible.com/ansible/latest/intro_configuration.html#private-key-file

六、常用模块

1、ping模块:指定ansible server跟client的连通性,测试成功会返回“pong”

[root@ren5 ~]# ansible all -m ping

2、command模块:命令模块,默认模块,用于在远程执行命令(不支持正则和管道符)

[root@ren5 ~]# ansible test_ren1 -m command -a "date '+%F %T'"

3、cron模块:管理定时任务

state:(prsent:安装;absent:移除)

day、env、hour、job、minute、month、name、state、user、weekday

[root@ren5 ~]# ansible test_ren1 -m cron -a "minute=*/5 job='echo HELLO' state=present name=cron_test1"

[root@ren5 ~]# ansible test_ren1 -a "crontab -l"

[root@ren5 ~]# ansible test_ren1 -a "crontab -r"

4、user模块:管理用户账户

name=:指明创建的用户的名字

remove=USERNAME(state=absent)

state=present        #创建用户          shell=:指定用户shell类型

#ansible testhosts -m user -a 'name=user1 uid=250 group=group250'

5、group模块:添加或者删除用户组

#ansible testhosts -m group -a 'name=group250 gid=250'

6、copy模块:复制本地文件到远程主机

src=:定义本地源文件路径

dest=:定义远程目标文件路径

[root@ren5 ~]# ansible test_ren1 -m copy -a "src=/root/a.txt dest=/root/a.txt"

content=:取代src,表示直接用此处指定的信息生成为目标的内容

#ansible all -m copy -a 'content=nihao dest=/root/a.txt'

7、service模块:管理程序服务,指定运行状态

[root@ren5 ~]# ansible all -m service -a "name=httpd state=restarted"

[root@ren5 ~]# ansible all -m shell -a "ss -tnl |grep 80"

enabled=:是否开机自动启动,取值为true或者false

name=:服务名称

state=:状态,取值有started,stopped,restarted

8、shell模块:和command模块类似,在远程主机上运行命令,支持变量等符号,尤其是在用到管道符等功能的复杂命令

[root@ren5 ~]# ansible all -m shell -a "ls /tmp |wc -l"

9、script模块:将本地脚本复制到远程主机并运行(无需加多余参数,只需要在-a后面加上本地脚本路径即可)

ansible testhosts -m script -a '/root/a.sh'

10、yum模块:安装程序包

[root@ren5 ~]# ansible all -m yum -a "name=httpd state=present"

[root@ren5 ~]# ansible all -m yum -a "list=httpd"

name=:指定要安装的程序包,可以带上版本号

state=:present,latest,installed表示安装,absent,removed表示卸载

list=:查看安装的程序包

11、setup模块:收集远程主机的facts

每个被管理的节点在接受并运行管理命令之前,会将自己主机相关信息,如操作系统版本,ip地址等报告给远程ansible主机

[root@ren5 ~]# ansible all -m setup

12、file模块:设置文件属性

[root@ren5 ~]# ansible all -m file -a "state=touch path=/root/test.txt"

转载于:https://www.cnblogs.com/renyz/p/11401252.html

Linux中级之ansible概念及hoc命令行调用模式相关推荐

  1. Java word转pdf Linux/windows跨平台 格式完美(利用命令行调用libreoffice)

    参考了里面的libreoffice的用法:https://blog.csdn.net/qwert678000/article/details/72770109 需求描述 最近在做word报表的自动生成 ...

  2. linux快捷命令补齐,Linux Shell简介——自动补齐/命令行的历史记录/编辑命令行/可用的 Shell 快捷方式.doc...

    Linux Shell简介--自动补齐/命令行的历史记录/编辑命令行/可用的 Shell 快捷方式 Unix (及后继者 Linux)在命令行下面诞生,因此,Unix 中的命令行有许多非常实用的功能. ...

  3. Linux 下五个顶级的开源命令行 Shell

    这个世界上有两种 Linux 用户:敢于冒险的和态度谨慎的. 其中一类用户总是本能的去尝试任何能够戳中其痛点的新选择.他们尝试过不计其数的窗口管理器.系统发行版和几乎所有能找到的桌面插件. 另一类用户 ...

  4. linux 垃圾桶命令,linux下的一些好用的命令行

    linux下的一些好用的命令行 添加环境变量 Linux 中需要将 libjakaAPI.so 和 jkrc.so 放在同一个文件夹下,并添加当前文件夹路径到环境变量, 使用命令 export LD_ ...

  5. Electron-vue开发实战7——命令行调用与系统级别右键菜单项的实现

    原文首发在我的博客,欢迎关注! 前言 前段时间,我用electron-vue开发了一款跨平台(目前支持主流三大桌面操作系统)的免费开源的图床上传应用--PicGo,在开发过程中踩了不少的坑,不仅来自应 ...

  6. java调用jar并传参,Java项目导出为jar包+导出第三方jar包+使用命令行调用+传参

    Java项目导出为jar包+导出第三方jar包+使用命令行调用+传参 一.打包 情况1:不需要向程序传参数,并且程序没有使用第三方jar包 Eclipse上导出jar: 然后选择一个java文件作为入 ...

  7. VB6 实现命令行调用时附着到原控制台

    Public Declare Function AttachConsole Lib "kernel32.dll" (ByVal ProcessID As Integer) As B ...

  8. Java中命令行调用大坑

    Java中命令行调用大坑 背景 我司有一个查询服务接口机,QPS大概40~50,调用方式是Java调用Shell命令行的方式,核心代码如下: Process ps = Runtime.getRunti ...

  9. 命令行界面命令模式及相互切换、交换机命令行操作模式及模式间的切换过程、命令行界面基本功能、命令的快捷键功能、交换机基本配置命令、交换机特权模式下基本命令、交换机全局配置模式下基本命令、

    1.命令行界面命令模式及相互切换   锐捷交换机命令行管理界面分成若干不同的模式,用户当前所处的命令模式决定了可以使用的命令,不可跨模式执行命令.以下给出三种基本模式.   用户模式(User EXE ...

  10. Windows中使用命令行调用py文件

    1.新建一个py文件 进入你需要保存的文件位置,如E盘 进入E盘后右键,选择新建文本文件 打开新建的文档后,输入python代码,保存 保存后的文本文档修改文件名,后缀改为.py,如 test.py ...

最新文章

  1. 浏览Github必备的5款神器级别的Chrome插件
  2. 购物搜索引擎架构的变与不变——淘宝网曲琳
  3. window10安装tensorflow
  4. Kubernetes - - k8s - v1.12.3 动态存储管理GlusterFS及使用Heketi扩容GlusterFS集群
  5. Java程序员校招蚂蚁金服,mysql培训考试
  6. Android官方开发文档Training系列课程中文版:管理设备的睡眠状态
  7. 高并发项目Java是标配?.NET Core要将它拉下“神坛”!
  8. 人生实苦,可这就是人生
  9. MySQL8web安装_mysql 8.0.18 安装配置图文教程
  10. Modbus通用数据读取工具设计及使用
  11. 推荐一款颜值逆天且功能齐全的开源Shell工具
  12. Python爬取必应图片2
  13. 大菠萝?Pinia已经来了,再不学你就out了
  14. lwip---(五)以太网数据接收
  15. windows自带日文输入法突然显示假名与敲击的按键不一致
  16. vue+croppr.js 裁剪圆形图片
  17. 五一假期游泰国:曼谷景点游玩省钱攻略
  18. STM32CUBE——使用DWT提供毫秒延迟
  19. 互联网公司的中台到底是什么
  20. 统计表格中相同数据的出现个数

热门文章

  1. 茶余饭后聊Spring 一
  2. hdu 4313 Matrix 并查集 多校联合赛(二) 第四题
  3. hdu Train Problem I 栈的基本应用
  4. 如何删除 Mac 上的 Office 许可证文件?
  5. DMG Canvas for mac(DMG打包工具)
  6. 如何在Mac上禁用iCloud驱动器?
  7. 7.07 生成累积乘积
  8. 学习廖雪峰的Python教程之Python基础
  9. 《精通 ASP.NET MVC 4》----1.5 ASP.NET MVC 4的新特性
  10. wemall app商城源码Android中ViewHolder详细解释