飞天使-linux操作的一些技巧与知识点4-ansible常用的技巧,配置等

文章目录

        • ansible
        • 配置文件的优先级
        • 尝试开始进行操作
        • ansible常用模块
        • ansible 的playbook
        • 示例
        • 安装php
        • playbook中变量的引用

ansible
yum install -y ansible 
测试是否可用 ansible localhost -m ping
/etc/ansible/ansible.cfg :主配置文件,配置 ansible 工作特性
/etc/ansible/hosts :配置主机清单文件
/etc/ansible/roles/ :存放 ansible 角色的目录主配置文件存在 /etc/anible/ansible.cfg
指定特权用户
[privilege_escalation]
become=True
become_method=sudo
become_user=user
become_ask_pass=Falseansible;adhoc;playbook;tasks;Roles;Roles方式编排web集群架构;
配置文件的优先级
1) 最先查找 $ANSIBLE_CONFIG 变量
2) 其次查找当前项目目录下 ansible.cfg
3) 然后查找用户家目录下的 .ansible.cfg
4) 最后查找 /etc/ansible/ansible.cfgInventory 文件主要用来填写被管理主机以及主机组信息;(逻辑上定义);
默认 Inventory 文件为 /etc/ansible/hosts ;
当然也可以自定义一个文件,当执行 ansible 命令时使用 -i 选项指定 Inventory
文件位置;
配置主机清单
[webservers]
172.16.1.7
172.16.1.8 ansible_become=yesansible_become=yes 这个的意思是加上sudo
尝试开始进行操作
ad-hoc执行步骤
1.加载自己的配置文件,默认 /etc/ansible/ansible.cfg ;
2.查找对应的主机配置文件,找到要执行的主机或者组;
3.加载自己对应的模块文件,如 command ;
4.通过 ansible 将模块或命令生成对应的临时 py 文件,并将该文件传输至远
程服务器对应执行用户 $HOME/.ansible/tmp/ansible-tmp-number/XXX.PY ;
5.执行用户家目录的 `` 文件;
6.给文件 +x 执行;
7.执行并返回结果;
8.删除临时 py 文件, sleep 0 退出;使用 ad-hoc 执行一次远程命令,注意观察返回结果的颜色;
绿色: 代表被管理端主机没有被修改
黄色: 代表被管理端主机发现变更
红色: 代表出现了故障,注意查看提示

在这里插入图片描述

ansible常用模块
command模块
[root@manger ~]# ansible localhost -m command -a 'chdir=/root
echo $PWD'ansible localhost -m command -a
'creates=/data/file ifconfig eth0'shell 模块
参数 选项 含义
chdir chdir /opt 执行ansible时,切换到指定的目录
creates creates /data/file 如果文件存在,则跳过执行
removes removes /data/file 如果文件存在,则执行
ansible localhost -m shell -a "ifconfig eth0|awk
'NR==2' "scripts 模块ansible webservers -m script -a "/data/yum.sh"copy模块
ansible webservers -m copy -a "src=./httpd.conf
dest=/etc/httpd/conf/httpd.conf owner=root group=root mode=644"file模块ansible webservers -m file -a
"path=/tmp/foo.conf state=touch mode=666"ansible webservers -m file -a "path=/tmp/foo
state=directory mode=777"
ansible webservers -m file -a "path=/tmp/foo
state=directory owner=root group=root mode=777 recurse=yes"等模块,有很多平时用不到,这里做一个大概记录
ansible 的playbook
playbook 是一个 由 yaml 语法编写的文本文件,它由 play 和 task 两部分组
成。
play : 主要定义要操作主机或者主机组
task :主要定义对主机或主机组具体执行的任务,可以是一个任务,也可以是多个
任务(模块)
总结: playbook 是由一个或多个 play 组成,一个 play 可以包含多个 task 任
务。
可以理解为: 使用多个不同的模块来共同完成一件事情。1) playbook 是对 AD-Hoc 的一种编排方式。
2) playbook 可以持久运行,而 Ad-Hoc 只能临时运行。
3) playbook 适合复杂的任务,而 Ad-Hoc 适合做快速简单的任务。
4) playbook 能控制任务执行的先后顺序。语法 描述
缩进 YAML使用固定的缩进风格表示层级结构,每个缩进由两个空格组成, 不能
使用tabs
冒号 以冒号结尾的除外,其他所有冒号后面所有必须有空格。
短横线
表示列表项,使用一个短横杠加一个空格。多个项使用同样的缩进级别
作为同一列表。
示例
$cat installed_httpd.yml
#1.定义play
#2.定义task、(Installed、Configure、Init、Systemd)- hosts: webserverstasks:- name: Installed Httpd Serveryum:name: httpdstate: present- name: Configure Httpd Servercopy:src: ./httpd.conf.j2dest: /etc/httpd/conf/httpd.confowner: "root"group: "root"mode: '0644'backup: yesnotify: Restart Httpd Server- name: Init Httpd Servercopy:src: ./index.html.j2dest: /var/www/html/test.html- name: Systemd Httpd Serversystemd:name: httpdstate: startedenabled: yeshandlers:- name: Restart Httpd Serversystemd:name: httpdstate: restarted上面是用root 用户执行的
下面是用普通用户执行
- hosts: webserversbecome: truebecome_user: roottasks:- name: Installed Httpd Serveryum:name: httpdstate: present- name: Configure Httpd Servercopy:src: ./httpd.conf.j2dest: /etc/httpd/conf/httpd.confowner: "nouser"group: "nouser"mode: '0644'backup: yesnotify: Restart Httpd Server- name: Init Httpd Servercopy:src: ./index.html.j2dest: /var/www/html/test.htmlowner: "nouser"group: "nouser"mode: '0644'- name: Systemd Httpd Serversystemd:name: httpdstate: startedenabled: yeshandlers:- name: Restart Httpd Serversystemd:name: httpdstate: restarted检查语法 :ansible-playbook installed_httpd.yml --
syntax-check执行命令: ansible-playbook installed_httpd.yml 
安装php
cat install_nginx_php.yml
#1.安装nginx
#2.安装php
#3.添加nginx虚拟主机,触发重启
#4.配置php,连接redis;触发重启
#5.部署phpadmin;、- hosts: webserversvars:web_site_directory: /ansible/admin2tasks:- name: Installed Nginx PHP Serveryum:name: "{{ item }}"state: presentloop:- nginx- php71w- php71w-cli- php71w-common- php71w-devel- php71w-embedded- php71w-gd- php71w-mcrypt- php71w-mbstring- php71w-pdo- php71w-xml- php71w-fpm- php71w-mysqlnd- php71w-opcache- php71w-pecl-memcached- php71w-pecl-redis- php71w-pecl-mongodbtags: Install- name: Create Nginx Process Runtime Groupgroup:name: wwwgid: 666tags: Install- name: Create Nginx Process Runtime Useruser:name: wwwuid: 666create_home: notags:- Install- Configure- name: Configure Nginx Nginx.confcopy:src: ./conf/nginx.conf.j2dest: /etc/nginx/nginx.confowner: 'root'group: 'root'mode: '0644'notify: Restart Nginx Servertags: Configure- name: Configure Nginx VHosts ansible.oldxu.com;template:src: ./conf/ansible.oldxu.com.conf.j2dest: /etc/nginx/conf.d/ansible.oldxu.com.confnotify: Restart Nginx Server- name: Check Web Configureshell:cmd: /usr/sbin/nginx -tregister: Check_Nginxchanged_when:- Check_Nginx.stdout.find('successful')- false- name: Configure php php.inicopy:src: "{{ item.src }}"dest: "{{ item.dest }}"mode: "{{ item.mode }}"loop:- { src: "./conf/php.ini.j2", dest: "/etc/php.ini" , mode: "0644" }- { src: "./conf/php-fpm.d.www.conf.j2", dest: "/etc/php-fpm.d/www.conf" , mode: "0644" }notify: Restart PHP Server- name: Systemd Nginx And PHP Serversystemd:name: "{{ item }}"state: startedenabled: yesloop:- nginx- php-fpm# download code- name: Create Web Site Directoryfile:path: "{{ web_site_directory }}"state: directoryowner: 'www'group: 'www'mode: '0755'- name: Unarchive Myadmin Codeunarchive:src: file/phpmyadmin.zipdest: "{{ web_site_directory }}"owner: 'www'group: 'www'handlers:- name: Restart Nginx Serversystemd:name: nginxstate: restarted- name: Restart PHP Serversystemd:name: php-fpmstate: restarted
playbook中变量的引用
变量提供了便捷的方式来管理 ansible 项目中的动态值。 比如 nginx-1.12 ,可能
后期会反复的使用到这个版本的值,那么如果将此值设置为变量,后续使用和修改都
将变得非常方便。这样可以简化项目的创建和维护;在 Ansible 中定义变量分为如下三种方式:
1) 通过命令行传递变量参数定义
2) 在play文件中进行定义变量
2.1) 通过vars定义变量
2.2) 通过vars_files定义变量
3) 通过inventory在主机组或单个主机中设置变量
3.1) 通过host_vars对主机进行定义
3.2) 通过group_vars对主机组进行定义vars 形式的变量
- hosts: webserversvars:web_packages: httpdftp_packages: vsftpdtasks:- name: Output Variablesdebug:msg:- "{{ web_packages }}"- "{{ ftp_packages }}"输出结果为"msg": ["httpd","vsftpd"]在 playbook 中使用 vars_files 指定文件作为变量文件,好处就是其他的
playbook 也可以调用;
[root@ansible project1]# cat vars.yml
web_packages: httpd
ftp_packages: vsftpd- hosts: webserversvars_files:- ./vars.ymltasks:- name: Output Variablesdebug:msg:- "{{ web_packages }}"- "{{ ftp_packages }}"playbook 传送多个变量
ansible-playbook f5.yml -i hosts -e
"web_packages=GeoIP" -e "ftp_packages=telnet"

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

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

相关文章

解决固定资产盘点问题,易点易动来帮忙!

固定资产盘点是企业管理中不可或缺的环节,然而,很多企业在固定资产盘点方面面临一系列问题: 盘点过程繁琐:传统的手动盘点方式需要耗费大量人力和时间,容易出现疏漏和错误,效率低下; 数据记录不…

随记-nginx docker + SSL 配置 - 配置等资源挂宿主机

随记-Nginx docker SSL 配置 - 配置等资源挂宿主机等 笔者动手配置,随手写的笔者,保证可操作 话说现在padmon是不是已经有代替docker的趋势了,谁能告诉我一把? 配置前准备 # 拉取nginx镜像 docker pull nginx #启动(暂时) doc…

Docker技术基础梳理 - Docker网络管理

为什么需要容器的网络管理? 容器的网络默认与宿主机、与其他容器相互隔离,且容器中可以运行一些网络应用,比如nginx、web应用、数据库等,如果需要让外部也可以访问这些容器中运行的网络应用,那么就需要配置网络来实现…

【ITK库学习】使用itk库进行图像滤波ImageFilter:二阶微分

目录 1、itkRecursiveGaussianImageFliter 递归高斯滤波器2、itkLapacianRecursiveGaussianImageFiter 拉普拉斯高斯滤波器 1、itkRecursiveGaussianImageFliter 递归高斯滤波器 该类用于计算具有高斯核近似值的 IIR 卷积的基类。 该类是递归滤波器的基类,它与高斯…

Netty详细文档

Netty教程 文章目录 Netty教程 Netty简介Netty 的介绍Netty 的应用场景互联网行业游戏行业大数据领域其它开源项目使用到 Netty Netty 的学习资料参考 Java BIO编程I/O 模型BIO、NIO、AIO 使用场景分析Java BIO 基本介绍Java BIO 工作机制Java BIO 应用实例问题分析 Java NIO编…

不得不知的Aspera替代方案,让文件传输变得更轻松

aspera作为一款高效的文件传输工具,可以让用户在网络状况不佳时仍然能够进行快速的大文件传输。然而,由于aspera的高昂价格和复杂的部署难度,很多用户开始寻找aspera替代方案来解决文件传输问题。 1、CFT CFT是一款由BMC Software公司开发的…

中国法拍房数量统计预测模型_2023年法拍房数量竟是。。

法拍房主要平台 法拍房主要平台有3家,分别是阿里、京东和北交互联平台。目前官方认定纳入网络司法拍卖的平台共有7家,其中阿里资产司法拍卖平台的挂拍量最大。 阿里法拍房数据显示2017年,全国法拍房9000套;2018年,法…

mybatis与oracle数据库jdbcType类型对应关系

之前都是百度上搜的,各种对应的都有,总觉得有问题,最后直接通过跑代码查看了一下对应关系,我用的oracle是19c。 常见的对应关系如下 oracle类型jdbcTypeVARCHAR2JdbcType.VARCHARNVARCHARJdbcType.NVARCHARCHARJdbcType.CHARCLOB…

机器学习中的混沌工程:拥抱不可预测性以增强系统鲁棒性埃

一、介绍 在动态发展的技术世界中,机器学习 (ML) 已成为一股革命力量,推动各个领域的创新。然而,随着机器学习系统的复杂性不断增加,确保其可靠性和鲁棒性已成为首要问题。这就是混沌工程发挥作用的地方,混沌工程是一门…

Android Compose Transition 动画

Transition 是一种动画效果,用于在组件的状态之间进行平滑的过渡。它可以帮助我们在状态变化时,以一种流畅的方式更新 UI。通过使用 Compose 的 Transition API,您可以在应用中创建各种各样的动画效果,从而增强用户体验并提高应用…

Axure元件库使用与ProcessOn流程图

Axure元件库 自定义Axure元件库: 打开Axure RP软件,并点击菜单栏中的“元件库”选项,选择“新建元件库”。 在弹出的对话框中,选择一个文件夹来保存您的自定义元件库,并给它一个名称。 在Axure RP的主界面上&#x…

四、Java流程控制

第一章 流程控制语句 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。所以,我们必须清楚每条语句的执行流程。而且,很多时候要通过控制语句的执行顺序来实现我们想要的功能。 1.1 流程控制语句分类 ​ 顺序结构 …

机器学习---逻辑回归算法

1、逻辑回归 逻辑回归又叫logistic回归分析,是一种广义的线性回归分析模型。线性回归要求因变量必须是连续性的数据变量,逻辑回归要求因变量必须是分类变量,可以是二分类或者多分类(多分类都可以归结到二分类问题),逻辑回归的输出…

深入理解 Go 语言 Goroutine 的工作原理

一、设计思路 1、设计描述 启动服务之时先初始化一个 Goroutine Pool 池,这个 Pool 维护了一个类似栈的 LIFO 队列,里面存放负责处理任务的 Worker然后在 client 端提交 task 到 Pool 中之后,在 Pool 内部,接收 task 之后的核心…

数据库数据恢复—Mysql数据库误删表数据的数据恢复案例

mysql数据库数据恢复环境: 本地服务器,windows server操作系统 ,部署有mysql单实例,数据库引擎类型为innodb,独立表空间,无数据库备份,未开启binlog。 mysql数据库故障: 工作人员使…

勒索病毒最新变种.mallox勒索病毒来袭,如何恢复受感染的数据?

导言: 威胁着我们数据安全的勒索病毒如.mallox已经变得愈发狡猾和具有挑战性。本文91数据恢复将深入介绍.mallox勒索病毒的特征、恢复受害数据的方法,以及一些预防措施,助您更好地应对这一威胁。 如果受感染的数据确实有恢复的价值与必要性&…

HarmonyOS应用开发初体验

9月25日华为秋季全场景新品发布会上,余承东宣布,全面启动鸿蒙原生应用,HarmonyOS NEXT开发者预览版将在2024年第一季度面向开发者开放。 最近鸿蒙开发可谓是火得一塌糊涂,各大培训平台都开设了鸿蒙开发课程。美团发布了鸿蒙高级工…

ZLMediaKit 编译以及测试(Centos 7.9 环境)

文章目录 一、前言二、编译器1、获取代码2、编译器2.1 编译器版本要求2.2 安装编译器 3、安装cmake4、依赖库4.1 依赖库列表4.2 安装依赖库4.2.1 安装libssl-dev和libsdl-dev4.2.2 安装 ffmpeg-devel依赖和ffmpeg依赖 三、构建和编译项目(启用WebRTC功能&#xff09…

JavaWeb笔记之MySQL数据库

#Author 流云 #Version 1.0 一、引言 1.1 现有的数据存储方式有哪些? Java程序存储数据(变量、对象、数组、集合),数据保存在内存中,属于瞬时状态存储。 文件(File)存储数据,保存…

电商类app如何进行软件测试?有必要进行第三方软件测试吗?

电商类app在开发过程中,软件测试是一个非常重要的环节。通过软件测试,可以确保app在发布和使用过程中的稳定性和安全性。那么,电商类app究竟如何进行软件测试?是否有必要进行第三方软件测试? 一、电商类app如何进行软件测试?   1. 内部…