ansible的常见用法

news2024/11/25 0:33:52

目录

##编辑hosts文件

##copy模块##复制过去

##fetch模块##拉取

##shell模块 ##好用

##command模块##

##file模块###

##cron模块###

##crontab 计划任务

##下载好时间插件

##script模块

##yum模块##

##yum下载源配置文件 /etc/yum.repos.d/CentOS-Base.repo

##service模块

##anisble-playbook##

##yaml格式

##template(模版)

##传递变量

##yaml文本里面传递

##直接接-e传递变量

##还可以在hosts文件里指定变量

##setup模块##

##absible roles 模块##

##handlers和notify 的使用

##yaml格式

##拓展:时间的命令


ansible的重要组成部分

Palybook --#剧本 ,让主机按照我给的剧本去完成一些事情

Module --#模块 去实现一个个功能的程序

Pluging --#插件 实现一些额外的小功能

ansible 的yum 安装

  1. ##安装 yum install epel-release -y
  2. yum install ansible -y
  3. ##配置文件

    /etc/ansible/ansible.cfg

    Ansible 的主配置文件,此文件主要定义了roles_path的路径

    /etc/ansible/hosts

    默认主机清单配置文件,可以通过ansible.cfg

    ##复制一个备份文件

    [root@wangyalin-hunan-changsha ansible]# cp hosts{,.bak} ##先备份

    [root@wangyalin-hunan-changsha ansible]# ls

    ansible.cfg hosts hosts.bak roles

    [root@wangyalin-hunan-changsha ansible]# >hosts #在清空文件

##编辑hosts文件

[root@wangyalin-hunan-changsha ansible]# vim hosts

[root@wangyalin-hunan-changsha ansible]# cat hosts

#将需要管理的主机添加到webser组

#默认端口号就是22

#如果通过ssh登录的端口不是22端口,就需要在配置文件里面指明端口号

[web]

192.168.47.196

192.168.47.200

[all]

192.168.47.196

192.168.47.200

192.168.47.205

除了以上两个重要的配置文件还有三个重要的可执行文件:

ansible ##主执行程序,一般用于命令行下的执行任务

ansible-palybook ##执行playbook中的任务,一般是配合yaml文件使用

ansible-doc ##获取各个模块的帮助信息

 用法:

[root@dhcp-clinet roles]# ansible-doc copy
> COPY    (/usr/lib/python2.7/site-packages/ansible/modules/files/copy.py)

        The `copy' module copies a file from the local or remote machine to a location on the remote
        machine. Use the [fetch] module to copy files from remote locations to the local box. If you need
        variable interpolation in copied files, use the [template] module. Using a variable in the
        `content' field will result in unpredictable output. For Windows targets, use the [win_copy]
        module instead.

##copy模块##复制过去

#复制本台主机的信息到远程主机上

[root@wangyalin-hunan-changsha ansible-test]# ansible web -m copy -a "src=opt/ansible-test/ansible.txt dest=/opt/ansible.txt mode=755 owner=sc"

###创建过去文件,会把那边的文件进行覆盖

##fetch模块##拉取

##copy的功能很相似,就是把远程主机的信息复制到本台主机上

#不能指定属主和属组,以及模式权限

[root@wangyalin-hunan-changsha ansible]# ansible web -m fetch -a "src=/etc/passwd dest=/opt/ansible-test"

192.168.47.196 | CHANGED => {

"changed": true,

"checksum": "297601f83a2a36e93e7992aeaf1f976d7199a433",

"dest": "/opt/ansible-test/192.168.47.196/etc/passwd",

"md5sum": "766c45a30bc8408edb2065ea3e9559b0",

"remote_checksum": "297601f83a2a36e93e7992aeaf1f976d7199a433",

"remote_md5sum": null

}

192.168.47.200 | CHANGED => {

"changed": true,

"checksum": "4d3bcc31d1f61f892f342f0a0e23823edbd73773",

"dest": "/opt/ansible-test/192.168.47.200/etc/passwd",

"md5sum": "d0af7a0f15cc1b9c76b47d4e38249bae",

"remote_checksum": "4d3bcc31d1f61f892f342f0a0e23823edbd73773",

"remote_md5sum": null

}

##shell模块 ##好用

在web的用户,进行shell编程,在各个用户下下面/tnp/sc 创建这个sc文件夹

[root@wangyalin-hunan-changsha ansible]# ansible web -m shell -a "mkdir /tmp/sc"

[WARNING]: Consider using the file module with state=directory rather than running

'mkdir'. If you need to use command because file is insufficient you can add 'warn:

false' to this command task or set 'command_warnings=False' in ansible.cfg to get rid

of this message.

192.168.47.196 | CHANGED | rc=0 >>

192.168.47.200 | CHANGED | rc=0 >>

###效果,注意的是结果返回值是零表示成功,非零则为失败

[root@wangyalin-hunan-changsha pssh-test]# ls /tmp/

sc

##command模块##

#很像那个shell但是shell还是更加好用一点

[root@wangyalin-hunan-changsha ssh]# ansible web -m command -a "ip add |gerp ens33"

192.168.47.196 | FAILED | rc=255 >>

Command "|gerp" is unknown, try "ip address help".non-zero return code

192.168.47.200 | FAILED | rc=255 >>

Command "|gerp" is unknown, try "ip address help".non-zero return code

##file模块###

State--

abset删除文件和目录

Direcstory 目录

Touch 创建空文件

Hard 建立硬链接

Link 建立软连接

##创建文件效果

[root@wangyalin-hunan-changsha ssh]# ansible web -m file -a "path=/opt/aniblle-file-test state=directory"

192.168.47.200 | CHANGED => {

###创建软连接

[root@wangyalin-hunan-changsha ssh]# ansible web -m file -a "path=/opt/ansible-link state=link src=/etc/passwd

##ip为192.168.47.200##效果如下

[root@wangyalin opt]# ls

aniblle-file-test ansible-link ansible.txt pssh-test wangyalin.txt

##cron模块###

#计划任务

##crontab 计划任务

###编辑计划任务

#1.crontab -e

#2.vim /etc/crontab

[root@wangyalin-hunan-changsha cron]# pwd

/var/spool/cron

#查看当前用户有哪些的计划任务

Crontab -l

[root@wangyalin-hunan-changsha cron]# crontab -l

0 2 * * * bash /backup/backup_log.sh

#*/1 * * * * mkdir /backup/sc$RANDOM

#Ansible: ansible-test

*/2 * * * * date >>/temp/time.txt

##每两分钟实现将date时间输出到/temp/time.txt文本里面

[root@wangyalin-hunan-changsha etc]# ansible web -m cron -a "minute=*/2 job='date >>/temp/time.txt' name=ansible-test state=present"

192.168.47.200 | CHANGED => {

"ansible_facts": {

"discovered_interpreter_python": "/usr/bin/python"

},

"changed": true,

"envs": [],

"jobs": [

"ansible-test"

]

}

192.168.47.196 | CHANGED => {

"ansible_facts": {

"discovered_interpreter_python": "/usr/bin/python"

},

"changed": true,

"envs": [],

"jobs": [

"ansible-test"

]

}

##下载好时间插件

[root@wangyalin opt]# yum install chrony -y

##script模块

把本地的脚本到远端执行;前提是到远端可以执行,不要把linux下的脚本同步到Windows下执行

#只能在远端服务器执行脚本,不上传脚本到远端服务器

[root@sanchuang-wangyalin  test]# ansible web -m script -a "./script_model_test.sh"

##yum模块##

##ansible使用yum模块

安装wget模块

[root@sanchuang-wangyalin  ansible]# ansible web -m yum -a "name=wget state=present"

[root@sanchuang-wangyalin  ansible]# ansible web -m yum -a "name=wget state=installed"

卸载wget模块

[root@sanchuang-wangyalin  ansible]# ansible web -m yum -a "name=wget state=absent"

[root@sanchuang-wangyalin  ansible]# ansible web -m yum -a "name=wget state=removed"

##安装vsftpd 和nginx

[root@sanchuang-wangyalin  ansible]# ansible web -m yum -a "name=vsftpd state=present"

用于安全快速传输文件服务器

[root@sanchuang-wangyalin  ansible]# ansible web -m yum -a "name=nginx state=present"

用于是一个高性能的开源 Web 服务器软件,也可以用作反向代理服务器、负载均衡器和 HTTP 缓存等

##yum下载源配置文件 /etc/yum.repos.d/CentOS-Base.repo

##eqel--拓展源

[root@sanchuang-wangyalin  yum.repos.d]# yum install eqel-release -y

[base]

name=CentOS-$releasever - Base

mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra

#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/

gpgcheck=1 #为1开启检验

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

enabled=0 #是否启动当前源  0表示禁用

#released updates

##service模块

服务管理参数

常用参数

name服务名

state:服务状态 started 启动 stopped 关闭

enabled 是否开启启动 truefalse

[root@sanchuang-wangyalin  etc]# ansible web -m service -a "name=nginx state=started"

runevel:启动级别(systemctl方式忽略)

##anisble-playbook##

剧本--》连续性的要求--》按照步骤走

#语法按照yaml格式

  1. playbook的核心元素

hosts:playbook配置文件作用的主机

tasks:任务列表

variables: 变量

templates:包含模块语法的文本文件

handlers :有特定条件出发的任务

roles:用于层次性,结构化地组织playbook roles能根据层次型结构自动装载变量文件、tasks以及handles等

##yaml格式

缩进必须对齐空格,不然会乱

[root@sanchuang-wangyalin  ansible-playbook]# cat playbook01.yaml

---

- hosts: 192.168.47.196 ##定义远程执行主机

  remote_user: root    ##定义远程用户

  tasks:               ##指定任务,可以执行很多个

      - name: create user  ##任务名字

        user: name=pb       ##任务执行的模块,和参数

      - name: cpoy file

        copy: src=/opt/ansible-test/index.html  dest=/opt/index.html

name:sc2

##层级关系

hunan:

    shengfen: changsha

    hupo: dongtinghu

#列表

classes:

        -yingboshuyuan

        -yuelushuyuan

##template(模版)

##遵循jinja2模版语法

大部分内容是一样的

结合变量一起使用以 .j2结尾

{{}}双大括号里面放变量

##传递变量

##变量的不同的指定方式

#写在playbook文件中--vars指令

##yaml文本里面传递

[root@sanchuang-wangyalin  ansible-playbook]# cat playbook03.yaml

---

- hosts: web

  vars:

       - file_name: test.txt

  tasks:

        - name: create file

          file:

             path: /tmp/{{file_name}}

             state: touch

##直接接-e传递变量

[root@sanchuang-wangyalin  ansible-playbook]# ansible-playbook playbook03.yaml -e "file_name=test01.txt"

##还可以在hosts文件里指定变量

##运行

[root@sanchuang-wangyalin  ansible-playbook]# ansible-playbook playbook03.yaml

##查看

[root@sanchuang-wangyalin  ansible-playbook]# cat /etc/ansible/hosts

#将需要管理的主机添加到webser组

#默认端口号就是22

#如果通过ssh登录的端口不是22端口,就需要在配置文件里面指明端口号

[web]

192.168.47.196  file_name=web1.txt

192.168.47.200  file_name=web2.txt

[all]

192.168.47.196

192.168.47.200

192.168.47.205

##setup模块##

Ansible 中的一个特殊模块,用于收集主机的详细信息

##absible roles 模块##

分块管理目录

  1. 建立目录结构
  2. 编写nginx配置文件模版

##handlers和notify 的使用

详见Ansible--Ansible之Playbook - 别来无恙- - 博客园 (cnblogs.com)

##yaml格式

  1. playbook的运作方式

##变量的不同的指定方式

#写在playbook文件中--vars指令

##拓展:时间的命令

  • %Y:4位数的年份(例如:2022)
  • %y:2位数的年份(例如:22)
  • %m:2位数的月份(例如:01到12)
  • %B:完整的月份名称(例如:January、February)
  • %b:缩写的月份名称(例如:Jan、Feb)
  • %d:2位数的日期(例如:01到31)
  • %A:完整的星期几名称(例如:Sunday、Monday)
  • %a:缩写的星期几名称(例如:Sun、Mon)
  • %H:24小时制的小时数(例如:00到23)
  • %I:12小时制的小时数(例如:01到12)
  • %M:分钟数(例如:00到59)
  • %S:秒数(例如:00到59)
  • %p:AM或PM
  • %Z:时区

##这里是之前ansible的补充内容 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1591524.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

时间序列分析 # 平稳性检验和ARMA模型的识别与定阶 #R语言

掌握单位根检验的原理并能解读结果;掌握利用序列的自相关图和偏自相关图识别模型并进行初步定阶。 原始数据在文末!!! 练习1、根据某1971年9月-1993年6月澳大利亚季度常住人口变动(单位:千人)的…

MySQL 嵌套查询

嵌套查询 是指在一个完整的查询语句之中,包含若干个不同功能的小查询;从而一起完成复杂查询的一种编写形式。包含的查询放在()里 , 包含的查询出现的位置: 位置含义SELECT之后把查询结果作为表头使用FROM…

ubuntu20.04.3挂载共享文件夹

VMware设置win共享文件夹 在linux执行挂载命令 sudo vmhgfs-fuse /mnt/hgfs/ -o nonempty这样就可以用管理员访问/mnt/hgfs/share

场景:如何做数据清理

如果数据清理简单粗暴按时间进行清理,同时时间字段并没有增加索引就会出问题 如果没有增加索引,他就会进行全表扫描,并且会给全表的数据上一个x锁 会阻塞其他的线程 解决方案参考阿里云DMS数据清理方案 这个SQL查询的目的是从名为table_hol…

2024年mathorcup数学建模思路及论文助攻

题目C题 物流网络分拣中心货量预测及人员排班 电商物流网络在订单履约中由多个环节组成,图1是一个简化的物流网络示意图。其中,分拣中心作为网络的中间环节,需要将包裹按照不同流向进行分拣并发往下一个场地,最终使包裹到达消费者…

Towards Street-Level Client-Independent IP Geolocation(2011年)(第一部分)

被引次数:306 Wang Y, Burgener D, Flores M, et al. Towards {Street-Level}{Client-Independent}{IP} Geolocation[C]//8th USENIX Symposium on Networked Systems Design and Implementation (NSDI 11). 2011. Abstract 一个高度精确的客户端独立的地理定位服务将是互联…

电商广告中的OCPC是什么?OCPC原理是什么?

1.定义: OCPC是指optimized cost per click(以目标转化为优化方式的点击出价),本质还是按照cpc付费。 2.三大特点:抢流量、避免无效流量、提高转化; 3.放量原理: 通过捕捉用户行为、行业数据…

数组算法——查询位置

需求 思路 使用二分查找找到第一个值,以第一个值作为界限,分为左右两个区间在左右两个区间分别使用二分查找找左边的7,:找到中间位置的7之后,将中间位置的7作为结束位置,依次循环查找,知道start>end,返回…

股票价格预测 | Python使用LSTM预测股票价格

文章目录 效果一览文章概述代码设计效果一览 文章概述 Python使用LSTM预测股票价格 代码设计 import pandas as pd import matplotlib.pyplot as plt import numpy as np import tensorflowfrom numpy import

mui和uniapp跳转外部链接

Hbuilder开发的app&#xff0c;会涉及到跳转H5页面 mui <!DOCTYPE html> <html><head><meta charset"utf-8"><meta name"viewport" content"initial-scale1.0, maximum-scale1.0, user-scalableno" /><link …

明明设置数字居中对齐,为什么excel的数字却不居中?

有时候在excel里&#xff0c;选中数据&#xff0c;设置对齐方式 左右居中&#xff0c;然而&#xff0c;数字却怎么都不居中&#xff0c;为什么呢&#xff1f; 1.按快捷键Ctrl1&#xff0c;打开单元格自定义格式对话框&#xff0c;看到是初始界面是在数字的会计专用&#xff0c;…

浮点数加减运算、强制类型转换

目录 王道考研ppt总结&#xff1a; 二、个人理解 浮点数加减运算步骤&#xff1a;1、对阶2、尾数加减3、规格化&#xff08;左规和右规&#xff09;4、舍入5、判断溢出 三、数据类型转换 王道考研ppt总结&#xff1a; 二、个人理解 浮点数加减运算步骤&#xff1a; 1、对…

Suno AI

Suno is the latest big name in AI, but what is it? Keep reading to learn everything you need to know about Suno AI, including what it is, what it can do, and how much it costs. Suno AI是一款由Anthropic公司开发的人工智能音乐生成器&#xff0c;它利用先进…

C语言什么是指针? 什么是指针变量?

一、问题 指针是 C 语⾔中的⼀个重要概念&#xff0c;也是 C 语⾔中的⼀个重要特⾊。它的身影在整个 C 语⾔体系中都会出现&#xff0c;⽽且其概念也⼗分复杂&#xff0c;需要多加注意和思考。 二、解答 为了更好地弄清指针的概念&#xff0c;这⾥不得不先提到地址以及数据在内…

2024年助理工程师职称申报时间是什么时候?

2024年助理工程师职称评审申报仅有10天时间 2024年助理职称申报条件&#xff1a;1.学历满足专三或者本一2.工程类专业毕业3.中专毕业满足5年 如果有学历条件不符合的话&#xff0c;可以跟甘建二这边协商&#xff0c;帮你解决 继续教育要求&#xff1a;中专毕业或⼤学专科毕业…

GAN:对抗式生成网络之图片生成

对抗式生成网络(Adversarial Generative Network, AGN)这一术语在您提供的信息中并未直接出现。通常,在深度学习文献和实践中,与“对抗”和“生成”概念相结合的网络架构指的是生成式对抗网络(Generative Adversarial Networks, GANs)。GANs由Ian Goodfellow等人于2014年…

Golang | Leetcode Golang题解之第26题删除有序数组中的重复项

题目&#xff1a; 题解&#xff1a; func removeDuplicates(nums []int) int {n : len(nums)if n 0 {return 0}slow : 1for fast : 1; fast < n; fast {if nums[fast] ! nums[fast-1] {nums[slow] nums[fast]slow}}return slow }

M12设备端面板安装连接器板后安装(前锁)L扣

M12设备端面板安装连接器板后安装(前锁)L扣 优势 -100% 电气测试及插拔测试-对于紧凑型设备&#xff1a;可在有限空间内传输很高的功率-密封圈受过度拧紧保护&#xff0c;实现长期可靠的密封 标准 IEC61076-2-111 锁紧方式 螺纹锁紧 订单料号 P/N: L-KYF12K4Z-PG9-M-L0.…

SpringBoot启动流程分析之准备应用上下文refreshContext()

文章目录 源码入口1、准备刷新1.1、子类prepareRefresh()方法1.2 父类prepareRefresh&#xff08;&#xff09;方法 2、通知子类刷新内部bean工厂3、准备bean工厂4、允许上下文子类对bean工厂进行后置处理 源码入口 org.springframework.boot.SpringApplication#run(java.lang…

Linux中磁盘的分区,格式化,挂载和文件系统的修复

一.分区工具 1.分区工具介绍 fdisk 2t及以下分区 推荐 (分完区不保存不生效&#xff0c;有反悔的可能) gdisk 全支持 推荐 parted 全支持 不推荐 ( 即时生效&#xff0c;分完立即生效) 2.fdisk 分区,查看磁盘 格式:fdisk -l [磁盘设备] fdisk -l 查看…