ansible的常见用法

目录

##编辑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的补充内容 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【opencv】示例-minarea.cpp 如何寻找一组随机生成的点的最小外接矩形、三角形和圆...

// 包含OpenCV库的高GUI模块和图像处理模块的头文件 #include "opencv2/highgui.hpp" #include "opencv2/imgproc.hpp"// 包含标准输入输出流的头文件 #include <iostream>// 使用命名空间cv和std&#xff0c;这样我们就可以直接使用OpenCV和标准库的…

Vitis HLS 学习笔记--ap_int.h / ap_fixed.h(1)

目录 目录 1. 概述 2. 简要规则 3. 浮点运算的复杂性 2.1 对阶 3.2 尾数运算 3.3 规格化和舍入 3.4 特殊值的处理 4. 示例&#xff08;ap_fixed.h&#xff09; 5. 量化模式&#xff08;ap_fixed.h&#xff09; 5.1 AP_SAT* 模式会增加资源用量 1. 概述 ap_int.h 和…

【网站项目】摄影竞赛小程序

&#x1f64a;作者简介&#xff1a;拥有多年开发工作经验&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的项目或者毕业设计。 代码可以私聊博主获取。&#x1f339;赠送计算机毕业设计600个选题excel文件&#xff0c;帮助大学选题。赠送开题报告模板&#xff…

【opencv】示例-opencv_version.cpp 输出OpenCV的版本和构建配置的示例

#include <opencv2/core/utility.hpp> // 引入OpenCV核心工具库 #include <iostream> // 引入标准输入输出流库// 定义一个包含命令行参数的字符串 static const std::string keys "{ b build | | print complete build info }" // 定义参数b&#xff…

2024年大唐杯官网模拟题

单选(出题角度很奇怪&#xff0c;不用太纠结&#xff09; 5G NR系统中&#xff0c;基于SSB的NR同频测量在measconfig里最多可以配置&#xff08; &#xff09;个SMTC窗口。 A、3 B、4 C、1 D、2 答案&#xff1a;D 2个 5G 中从BBU到AAU需要保证&#xff08; &#xff09;Gbps…

千视电子携NDI 6前沿技术,亮相北京CCBN展呈现轻量化媒体解决方案

千视携NDI 6技术闪耀2024 CCBN展会&#xff0c;呈现轻量化媒体解决方案 2024年4月24日至26日&#xff0c;北京首钢会展中心将举办第三十届中国国际广播电视网络技术展览会&#xff08;CCBN2024&#xff09;。这是中国广播电视行业的一项重要盛会&#xff0c;将有国内外超600家…

Linux硬件管理

文章目录 Linux硬件管理1.查看磁盘空间 df -h2.查看文件的磁盘占用空间 du -ah3.查看系统内存占用情况 htop Linux硬件管理 1.查看磁盘空间 df -h 语法 df [选项][参数]选项 -a或–all&#xff1a;包含全部的文件系统&#xff1b; –block-size<区块大小>&#xff1a;…

Unity打包出来的apk安装时提示应用程式与手机不兼容,无法安装应用程式

1、遇到的问题 * 2、解决办法 这是因为你在Unity中导出来的apk手机安装包是32位的&#xff0c;才导致上述问题发生&#xff0c;要解决这个办法&#xff0c;需要在Unity中导出64位的手机安装包。 32位跟64位的区别&#xff0c;以及如何区分打出来的手机安装包是否是32位或者是…

Centos服务器安装MySQL

Centos服务器安装MySQL 利用闲置服务器安装MySQL&#xff0c;用于项目练手 Linux版本&#xff1a;Centos7.9 MySQL版本&#xff1a;8.0.36 一、下载MySQL 从Oracle官网下载最新版本的MySQL wget https://dev.mysql.com/get/Downloads/MySQL-8.0/mysql-8.0.36-1.el7.x86_64.rp…

【OTA】STM32新能源汽车OTA技术ymodem协议PC串口升级过程

【OTA】STM32新能源汽车OTA技术ymodem协议PC串口升级过程 文章目录 前言一、实验工具1.串口USB线——烧录APP2生成的BIN文件2.STLINK——烧录BOOT代码和APP1代码3.烧录工具——将BIN文件烧录到单片机中4.FLYMCU——清除芯片FLASH 二、硬件绘制1.原理图2.PCB 三、软件配置1.BOOT…

zookeeper和kafka消息队列

zookeeper zookeeper介绍 Zookeeper是一个开源的分布式的&#xff0c;为分布式框架提供协调服务的Apache项目 zookeeper特点 zookeeper是由一个领导者(leader)&#xff0c;多个跟随者(follower)组成的集群 Zookeepe集群中只要有半数以上节点存活&#xff0c;Zookeeper集群…

express服务器 authorization 前端获取不到的问题

服务器生成token 设置在响应头&#xff0c;但是前端获取不到 const token JWT.generate({ id: new Date().getTime(), userName }, 10s) res.header(Authorization, token) axios.interceptors.response.use((response) > {console.log(response);if (response.data?.co…

关于Zookeeper+Kafka集群

文章目录 一、Zookeeper1、Zookeeper定义2、Zookeeper工作机制3、Zookeeper特点4、Zookeeper数据结构5、Zookeeper应用场景5.1 统一命名服务5.2 统一配置管理5.3 统一集群管理5.4 服务器动态上下线5.5 软负载均衡 6、Zookeeper 选举机制6.1 第一次启动选举机制6.2 非第一次启动…

ccframe系统的链路追踪,用户ID追踪的实现

需求 之前ccframe cloud V1用的是springcloud微服务&#xff0c;只需要在header将jwttoken一直传下去就没事&#xff0c;最近弄V2转dubbo发现用户id没有自动保存进数据库表。于是开始研究dubbo如何追踪&#xff0c;顺便把链路追踪ID的问题给一并解决掉。 理论 MDC MDC&…

Sonar下启动发生错误,elasticsearch启动错误

Download | SonarQube | Sonar (sonarsource.com) 1.首先我的sonar版本为 10.4.1 &#xff0c;java版本为17 2.sonar启动需要数据库,我先安装了mysql, 但是目前sonar从7.9开始不支持mysql&#xff0c;且java版本要最少11,推荐使用java17 3.安装postsql,创建sonar数据库 4.启…

海洋信息管理系统:守护蓝色星球,促进海洋经济新发展

海洋&#xff0c;覆盖地球表面超过七成的广阔水域&#xff0c;是生命之源&#xff0c;也是经济发展的重要空间。然而&#xff0c;随着人类活动的增加&#xff0c;海洋生态环境面临严峻挑战&#xff0c;海洋资源的可持续利用成为全球关注的焦点。在这样的背景下&#xff0c;构建…

爱奇艺APP Android低端机性能优化

01 背景介绍 在智能手机市场上&#xff0c;高端机型经常备受瞩目&#xff0c;但低端机型亦占据了不可忽视的份额。众多厂商为满足低端市场的需求&#xff0c;不断推出低配系列手机。另外过去几年的中高端机型&#xff0c;随着系统硬件的快速迭代&#xff0c;现已经被归类为低端…

NPM 命令备忘单

NPM 简介 Node Package Manager (NPM) 是 Node.js 环境中不可或缺的命令行工具&#xff0c;充当包管理器来安装、更新和管理 Node.js 应用程序的库、包和模块。对于每个 Node.js 开发人员来说&#xff0c;无论他们的经验水平如何&#xff0c;它都是一个关键工具。 NPM 的主要…

校园视频监控系统的设计与实现(论文+源码)_kaic

摘 要 本毕业设计的内容是设计并且实现一个基于java技术的校园视频监控系统。它是在Windows下&#xff0c;以MYSQL为数据库开发平台&#xff0c;java技术和Tomcat网络信息服务作为应用服务器。校园视频监控系统的功能已基本实现&#xff0c;主要实现个人中心&#xff0c;用户…

AI跟踪报道第37期-新加坡内哥谈技术-本周AI新闻: 人工智能竞赛:科技巨头的疯狂角逐!

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…