【Ansible 的脚本 --- playbook 剧本】

目录

  • 一、playbook 剧本介绍
  • 二、示例
    • 1、运行playbook
    • 2、定义、引用变量
  • 三、使用playbook部署lnmp集群


一、playbook 剧本介绍

playbooks 本身由以下各部分组成

(1)Tasks:任务,即通过 task 调用 ansible 的模板将多个操作组织在一个 playbook 中运行
(2)Variables:变量
(3)Templates:模板
(4)Handlers:处理器,当changed状态条件满足时,(notify)触发执行的操作
(5)Roles:角色

二、示例

vim  /etc/ansible/playbook/deamo1.yml
---
- name: the first play for install apache#gather_facts: falsehosts: dbserversremote_user: roottasks:- name: disable firewwalldservice: name=firewalld state=stopped enabled=no- name: disable selinuxcommand: '/usr/sbin/setenforce 0'ignore_errors: True- name: disable selinux foreverreplace: path=/etc/selinux/config regexp="enforcing" replace="disabled"- name: mount cdrommount: src=/dev/sr0 path=/mnt fstype=iso9660 state=mounted- name: copy local yum configuration filecopy: src=/etc/yum.repos.d/repo.bak/local.repo dest=/etc/yum.repos.d/local.repo- name: install apacheyum: name=httpd state=latest- name: prepare httpd configuration filecopy: src=/etc/ansible/playbook/httpd.conf dest=/etc/httpd/conf/httpd.confnotify: "reload httpd"- name: start apacheservice: name=httpd state=started enabled=yeshandlers:- name: reload httpdservice: name=httpd state=reloaded

在这里插入图片描述

1、运行playbook

ansible-playbook deamo1.yml
//补充参数:
-k(–ask-pass):用来交互输入ssh密码
-K(-ask-become-pass):用来交互输入sudo密码
-u:指定用户

在这里插入图片描述

在这里插入图片描述在这里插入图片描述

2、定义、引用变量

在这里插入图片描述

在这里插入图片描述

三、使用playbook部署lnmp集群

- name: the first play for install nginxhosts: dbserversremote_user: roottasks:- name: disable firewwalldservice: name=firewalld state=stopped enabled=no- name: disable selinuxcommand: '/usr/sbin/setenforce 0'ignore_errors: True- name: disable selinux foreverreplace: path=/etc/selinux/config regexp="enforcing" replace="disabled"- name: mount cdrommount: src=/dev/sr0 path=/mnt fstype=iso9660 state=mounted- name: copy local yum configuration filecopy: src=/etc/yum.repos.d/nginx.repo  dest=/etc/yum.repos.d/nginx.repo- name: install nginxyum: name=nginx- name: prepare nginx configuration filecopy: src=/etc/ansible/playbook/default.conf dest=/etc/nginx/conf.d/default.conf- name: start nginxservice: name=nginx state=started enabled=yes- name: wordpresscopy: src=/usr/share/nginx/html/wordpress  dest=/usr/share/nginx/html/- name: mysqlhosts: dbserversremote_user: roottasks:- name: remove mariadbshell: yum remove mariadb* -yignore_errors: True- name: yumcommand: wget https://repo.mysql.com/mysql57-community-release-el7-11.noarch.rpm- name: install mysql57command: rpm -ivh mysql57-community-release-el7-11.noarch.rpm- name: change mysql-community-servershell: sed -i 's/gpgcheck=1/gpgcheck=0/' /etc/yum.repos.d/mysql-community.repo- name: install mysql-serveryum: name=mysql-server- name: start mysqlservice: name=mysqld.service state=started enabled=yes- name: mysql congruation filecopy: src=/etc/ansible/playbook/mysql.sh dest=/var/lib/mysql- name: echo passwordshell: grep "password" /var/log/mysqld.log | awk 'NR==1{print $NF}'  #在日志文件中找出root用户的初始密码register: mysql_password   #将初始密码导入到mysql_password的变量中- name: echodebug:msg: "{{ mysql_password }}"  #输出变量mysql_password的值- name: grant locationshell:  mysql --connect-expired-password -uroot -p"{{ mysql_password['stdout'] }}" -e "ALTER USER 'root'@'localhost' IDENTIFIED BY 'Admin@123';"- name: grantshell: mysql --connect-expired-password -uroot -pAdmin@123 -e "grant all privileges on *.* to 'root'@'%' identified by 'Admin@123456' with grant option;"- name: create databaseshell: mysql --connect-expired-password -uroot -pAdmin@123 -e "create database wordpress;"- name: grantshell: mysql --connect-expired-password -uroot -pAdmin@123 -e "grant all on wordpress.* to 'admin'@'%' identified by 'Admin@123456';"- name: grantshell: mysql --connect-expired-password -uroot -pAdmin@123 -e "grant all on wordpress.* to 'admin'@'localhost' identified by 'Admin@123456';"- name: flushshell: mysql --connect-expired-password -uroot -pAdmin@123 -e 'flush privileges;'- name: yum removecommand: yum -y remove mysql57-community-release-el7-10.noarch- name: phphosts: dbserversremote_user: roottasks:- name: yum rpmcommand: yum -y install https://rpms.remirepo.net/enterprise/remi-release-7.rpmignore_errors: true- name: yum-utilsyum: name=yum-utils- name: yum-configcommand: yum-config-manager --enable remi-php74- name: list phpcommand: yum list php- name: yilaibaocommand: yum -y install php  php-cli php-fpm php-mysqlnd php-zip php-devel php-gd php-mcrypt php-mbstring php-curl php-xml php-pear php-bcmath php-json php-redis- name: start phpservice: name=php-fpm state=started enabled=yes

将yum安装的nginx里面的配置文件进行修改,后传输到对应的远程主机

在这里插入图片描述

在这里插入图片描述

解压wordpress压缩文件,放入到对应的html网页目录底下
在这里插入图片描述

进行传输到远程主机里的网页页面目录上
在这里插入图片描述

在这里插入图片描述

使用浏览器进行访问测试
在这里插入图片描述

在这里插入图片描述

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

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

相关文章

通过私有化部署的企业智能名片,作用究竟有多大?

“在21世纪最为重要的是什么?” “是人才,更是人脉。” 为了拓展人际关系,建立更密切的联系和合作联络。在商务交流中,互相交换正式、可信的名片是必不可少的一环。 但是,你有没有意识到呢? 每年全球交换…

2023年08月数据库流行度最新排名

点击查看最新数据库流行度最新排名(每月更新) 2023年08月数据库流行度最新排名 TOP DB顶级数据库索引是通过分析在谷歌上搜索数据库名称的频率来创建的 一个数据库被搜索的次数越多,这个数据库就被认为越受欢迎。这是一个领先指标。原始数…

kafka raft协议

1、首先要了解kafka是什么(Scala) Kafka是一个分布式的消息订阅系统,消息被持久化到一个topic中,topic是按照“主题名-分区”存储的,一个topic可以分为多个partition,在parition(分区)内的每条消息都有一个有序的id号,这个id号被称为偏移(offset),记录消息的消息位置…

【Spring】简化事件的使用,Spring提供了2种使用方式

Spring中事件可以配置顺序,利用线程池还可以做异步线程通知。怎么样使用事件?Spring简化事件的使用,Spring提供了2种使用方式:面向接口和面向EventListener注解。 1,面相接口的方式 案例 发布事件 需要先继承ApplicationEventP…

使用DataX实现mysql与hive数据互相导入导出

一、概论 1.1 什么是DataX DataX 是阿里巴巴开源的一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle 等)、HDFS、Hive、ODPS、HBase、FTP 等各种异构数据源之间稳定高效的数据同步功能。 1.2 DataX 的设计 为了解决异构数据源同步问题&#xf…

【E题】2023年电赛运动目标控制与自动追踪系统方案

系统的设计和制作可以按照以下步骤进行: 设计红色光斑位置控制系统: 选择合适的红色激光笔,并将其固定在一个二维电控云台上。 使用电机和编码器来控制电控云台的水平和垂直运动。 设计一个控制电路,可以通过输入控制信号来控制…

Vue2 第十三节 使用Vue脚手架 (二)

1. ref属性 2. props配置项 3.mixin混入 4.plugin插件 一. ref属性 ① 作用:用于给节点打标识(给元素或者组件注册引用信息,id的替代者) ② 语法: 应用在html标签上获取的是真实的DOM元素,应用在组件…

JsonPath使用和示例

JsonPath使用和示例 1 简介2 官方实例3 JsonPath与XPath语法对比4 实例说明JsonPath与XPath语法5 Python中JsonPath模块6 Python中JsonPath使用7 结合接口测试的实例 1 简介 官网:https://goessner.net/articles/JsonPath/;JsonPath 是一种简单的方法来…

vite babel 获取组件的 children 代码, 填写到 jsxCode 属性中

最终效果 <DocsModule title"类型"><Button>默认按钮</Button><Button type"primary">主要按钮</Button><Button type"success">成功按钮</Button><Button type"danger">危险按钮&l…

2023年中职组“网络安全”赛项吉安市竞赛任务书

2023年中职组“网络安全”赛项 吉安市竞赛任务书 一、竞赛时间 总计&#xff1a;360分钟 竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 A模块 A-1 登录安全加固 180分钟 200分 A-2 本地安全策略配置 A-3 流量完整性保护 A-4 事件监控 A-5 服务加固…

Python访问者模式介绍、使用

目录 一、Python访问者模式介绍 二、访问者模式使用 一、Python访问者模式介绍 访问者模式&#xff08;Visitor Pattern&#xff09;是一种行为型设计模式&#xff0c;它能够将算法与对象结构分离&#xff0c;使得算法可以独立于对象结构而变化。这个模式的主要思想是&#…

关于大规模数据处理的解决方案

大规模数据处理已经成为了现代商业和科学的核心。随着互联网普及和物联网技术的发展&#xff0c;越来越多的数据被收集和存储&#xff0c;这些数据包含了各种各样的信息&#xff0c;例如客户行为、传感器读数、社交媒体活动等等。这些数据的数量和复杂性已经超出了传统数据处理…

docker logs 使用说明

docker logs 可以查看某个容器内的日志情况。 前置参数说明 c_name容器名称 / 容器ID logs 获取容器的日志 , 命令如下&#xff1a; docker logs [options] c_name option参数&#xff1a; -n 查看最近多少条记录&#xff1a;docker logs -n 5 c_name--tail与-n 一样 &#…

【iOS】锁

线程安全 当一个线程访问数据的时候&#xff0c;其他的线程不能对其进行访问&#xff0c;直到该线程访问完毕。简单来讲就是在同一时刻&#xff0c;对同一个数据操作的线程只有一个。而线程不安全&#xff0c;则是在同一时刻可以有多个线程对该数据进行访问&#xff0c;从而得…

【力扣】722. 删除注释

以下为力扣官方题解&#xff0c;及本人代码 722. 删除注释 题目题意示例 1示例 2提示 官方题解模拟思路与算法复杂度 本人代码Java提交结果&#xff1a;通过 题目 题意 给一个 C C C 程序&#xff0c;删除程序中的注释。这个程序 s o u r c e source source 是一个数组&a…

Android SharedPreferences 使用(详细版)

经典好文推荐,通过阅读本文,您将收获以下知识点: 一、 SharedPreferences 简介 二、SharedPreferences 保存数据的方法 三、SharedPreferences读取数据的方法 四、总结SharePerference Utils 封装类使用方法 五、SharedPreferences 数据保存位置 一、 SharedPreferences 简介…

openCV C++环境配置

文章目录 一、openCV 安装二、新建项目三、配置环境变量四、测试使用 编译器:vs2017 OpenCV:4.5.4 一、openCV 安装 将openCV安装到一个路径下&#xff0c;我安装到了D盘根目录下 二、新建项目 在vs2017新建控制台空项目&#xff0c;打开项目属性 在VC目录 -> 包含目录下…

webrtc的线程模型

目录 线程的声明 线程创建过程 向线程中投递消息 从消息队列中取消息的具体实现 处理线程消息 webrtc线程模块的实现逻辑在 rtc_base\thread.h 文件中 比如想创建一个线程&#xff1a; //声明要创建的线程指针&#xff0c;通过智能指针管理 std::unique_ptr<rtc::Thr…

使用Jackson自定义反序列化操作(Custom Deserialization in Jackson)

Maven依赖 <dependencies><!-- yaml --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.14.2</version><exclusions><exclusion><ar…

智慧林业~经典开源项目数字孪生智慧林业——开源工程及源码

东北林业局的工程和源码免费赠送&#xff0c;帮您实现深林防火的智慧林业。 项目介绍 东北林业局作为东北地区林业管理的重要机构&#xff0c;致力于森林资源保护和防火工作。他们的项目通过先进的技术手段&#xff0c;为林业管理提供可靠的解决方案。 本项目使用数字孪生技术&…