关键词:
一:一个简单的Playbook
playbook比起shell脚本的优势,是幂等性,值得是运行一次和多次的结果都是一样的,不会对系统有影响
一个简单的playbook:
1 --- 2 - hosts: all 3 tasks: 4 - name: Install Apache 5 yum: name={{ item }} state=present 6 with_items: #定义上面的item变量 7 - httpd 8 - httpd-devel 9 - name: Copy configration files 10 copy: 11 src=‘#‘" /etc/httpd/conf/httpd.conf" 20 } 21 - { 22 src=‘#‘" /etc/httpd.conf/httpd-vhost.conf" 24 } 25 - name: Make apache is started 26 service: name=httpd state=started
上面的playbook的作用是安装apache,复制apache配置文件,重启apache
运行:
$ ansible-playbook playbook.yml
限制生效的host
$ ansible-playbook playbook.yml --limit webservers
ansible-playbook的其他选项
--inventory=PATH ( -i PATH ): 指定资源文件路径 --verbose ( -v ): 查看详细执行过程 --extra-vars=VARS ( -e VARS ):定义playbook中使用的变量 ex:"key=value,key=value" --forks=NUM ( -f NUM ): 定义线程使用个数 --connection=TYPE ( -c TYPE ): 定义链接类型,默认ssh --check : 在所有服务器上测试,但是不会运行
二:配置一个centos服务器为Node.js的应该服务器
先看服务器的架构
node_js.yml
1 --- 2 - hosts: 10.0.0.132 3 tasks: 4 - name: Import EPLE and Remi GPG key. #导入EPEL和Remi GPG校验码 5 rpm_key: "key={{ item }} state=present" 6 with_items: 7 - "https://fedoraproject.org/static/0608B895.txt" 8 - "http://rpms.famillecollet.com/RPM-GPG-KEY-remi" 9 10 - name: Install Remi repos #安装EPEL和Remi仓库 11 command: "rpm -Uvh --force {{ item.href }} creates={{ item.creates }}" 12 with_items: 13 - { 14 href: "http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch. rpm", 15 creates: "/etc/yum.repos.d/epel.repo" # creates参数指定如果有这个repo文件的话,就不执行上面的command 16 } 17 - { 18 href: "http://rpms.famillecollet.com/enterprise/remi-release-6.rpm", 19 creates: "/etc/yum.repos.d/remi.repo" 20 } 21 22 - name: Install Node.js and npm. # npm是node.js的包管理工具 23 yum: name=npm state=present 24 25 - name: Install Forever (to run our node.js app) # forever是node.js的工具,用来运行应用,global指定这个应用可以给所有的用户使用 26 npm: name=forever global=yes state=latest 27 28 - name: Ensure Node.js app folder exist. # node_app_ocation 变量可以通过命令行获取 29 file: "path={{ node_apps_location }} state=directory" 30 31 - name: Copy example Node.js app to server. 32 copy: "src=app dest={{ node_apps_location }}" 33 34 - name: Install app dependencies defined in package.json # 指定package.json的目录即可 35 npm: path={{ node_apps_location }}/app 36 37 - name: Check list of running Node.js apps. 38 command: forever list 39 register: forever_list # 注册command的运行结果到这个变量 40 changed_when: false # 只是显示,不改变服务器状态 41 42 - name: Start example Node.js app. 43 command: "forever start {{ node_apps_location}}/app/app.js" 44 when: "forever_list.stdout.find(‘{{ node_apps_location }}/app/app.js‘) == -1" # 避免启动多个app实例,只有forever list中没有node_app_location这个路径存在的时候,才运行这个app
创建一个node.js的应用
新建一个app目录,在目录里面新建一个app.js
app.js
1 // Load the express module express是一个简单的web框架,类似django 2 var express = require(‘express‘), 3 app = express.createServer(); 4 5 // Respond to requests for / with ‘Hello world‘. 6 app.get(‘/‘, function(req, res){ 7 res.send(‘Hello World!‘); # 请求返回的信息 8 }); 9 10 // Listen on port 80 (like a true web server) 11 app.listen(80); #配置监听端口 12 console.log(‘Express server started successfully.‘);
我们还需要在目录中创建package.json,告诉npm的依赖
package.json
1 { 2 "name": "examplenodeapp", 3 "description": "Example Express Node.js app.", 4 "author": "jwh5566 <[email protected]>", 5 "dependencies": { 6 "express": "3.x.x" 7 }, 8 "engine": "node >= 0.10.6" 9 }
运行命令:
[email protected]# ansible-playbook node_js.yml --extra-vars="node_apps_location=/usr/local/opt/node"
运行结果显示:
通过web访问
总结:
第四章上,到此为止,我们通过一个简单的playbook就可以配置一个webserver和一个node.js的app应用服务器,第四章下将会有更多的playbook 实例包括配置一个Drupal的LAMP服务器,配置tomcat服务器等等。
本文出自 “Linux is belong to you” 博客,请务必保留此出处http://jwh5566.blog.51cto.com/7394620/1843590
ansible一步一步从入门到精通
一:安装ansiblemac:1.安装Homebrew(gettheinstallationcommandfromtheHomebrewwebsite).2.安装Python2.7.x(brewinstallpython).3.安装Ansible(sudopipinstallansible).linux:如果系统中安装了python-pip和python-devel,你可以使用pip安装ansib 查看详情
防抖节流从简单到复杂,一步一步从入门到深入了解(代码片段)
防抖与节流防抖场景初版代码如下:进阶版代码如下箭头函数的写法:直接使用function函数的写法:终极版代码如下:节流场景:时间戳版节流定时器版节流定时器版节流与防抖方法代码逻辑详解说明:写... 查看详情
mybatis源码解析,一步一步从浅入深:映射代理类的获取
在文章:Mybatis源码解析,一步一步从浅入深(二):按步骤解析源码中我们提到了两个问题: 1,为什么在以前的代码流程中从来没有addMapper,而这里却有getMapper? 2,UserDao明明是我们定义的一个接口类,根本没有定义... 查看详情
如何一步一步精通vim
vimhttps://github.com/ma6174/vim/tree/master/bundle/syntastichttps://github.com/ma6174/vim/blob/master/tips.md#快速注释本文出自“运维自动化”博客,请务必保留此出处http://shower.blog.51cto.com/4926872/1865252 查看详情
一步一步教你yaml快速入门
Java学习之路迢迢,无论是开局helloword,还是从头文件说起,总之,都是有顺序可言。我们学习Java,都是先介绍properties文件,使用properties文件配合Properties对象能够很方便的适用于应用配置上。然后在引入XML的时候,我们介绍prop... 查看详情
从 React Native init 一步一步地 React Native Web
】从ReactNativeinit一步一步地ReactNativeWeb【英文标题】:Reactnativewebstepbystepfromreactnativeinit【发布时间】:2021-07-2304:59:04【问题描述】:谁能给我一步一步从一个新的reactnative项目安装reactnativeweb?1)初始化反应原生2)npminstallreact-domrea... 查看详情
springboot入门到精通-springboot自动配置原理(代码片段)
...什么不需要配置DispatcherServlet?带着这个问题我们来一步一步分析SpringBoot自动配置原理。1.1.@SpringBootApplication注解使用SpringBoot就需要在启动类贴上:@SpringBootAppli 查看详情
一步一步--如何将tableview添加到nib
】一步一步--如何将tableview添加到nib【英文标题】:Stepbystep--howtoaddtableviewtonib【发布时间】:2015-09-0912:32:17【问题描述】:我第一次使用nib文件并尝试添加一个带有tableview单元格的tableview。我创建了一个UIView控制器类型的nib文件... 查看详情
一步一步学java:入门的基础知识
JAVA入门的基础知识学的再多,也要记得复习复习基础知识丫; 基本类型及其转换数字中有byte,short,char,int,long,float,double的类型*在使用过程中:要注意在float后面加上F,在long后面加L;longi=10L;floatm=56.345F;char后... 查看详情
一步一步学习springspringbean管理(上)
1.spring工厂类我们前边的demo中用到的spring工厂类是ClassPathXmlApplicationContext,从上图可以看到他还有一个兄弟类FileSystemApplicationContext,这个类是加载非classpath路径下的配置文件,本质是一样的。从继承关系图中可以看到我们经常... 查看详情
一步一步搞懂支持向量机——从牧场物语到svm(上)
之前在数据挖掘课程上写了篇关于SVM的“科普文”,尽量通俗地介绍了SVM的原理和对各公式的理解。最近给正在初学机器学习的小白室友看了一遍,他觉得“很好,看得很舒服”,认为不发到blog上太可惜= = ... 查看详情
很全面的docker教程,从入门到精通(建议收藏)(代码片段)
...初设计的一个疏忽。从一个不会用docker的小白,自己一步一步的摸索,中间也踩过许多坑。但任然,坚持从哪里跌倒就从哪里爬起来。不求感动自己,但求人生无悔。 1容器简介1.1什么是 查看详情
linux入门之一步一步安装系统
1引言2安装前的准备工作下载vmwareworkstation下载gentoo所需要的文件知识点1我们下载的是基于x86架构的安装包在这里我们可以学习到用什么来区分架构例如X86SPARCMIPS等这些标识主要是用来区分cpu的指令集的不同体系不同型号的cpu有... 查看详情
[python入门到精通系列]新手接触python第一步之基础语法(代码片段)
新手接触Python第一步之基础语法Python本身是一种自然编程语言,它和计算机编程语言不同,自然语言在不同的语境下有不同的含义,而计算机要根据编程语言执行任务,就必须要保证编程语言写出的程序不能有歧... 查看详情
[python入门到精通系列]新手接触python第一步之基础语法(代码片段)
新手接触Python第一步之基础语法Python本身是一种自然编程语言,它和计算机编程语言不同,自然语言在不同的语境下有不同的含义,而计算机要根据编程语言执行任务,就必须要保证编程语言写出的程序不能有歧... 查看详情
一步一步教你将开源项目上传到jcenter
...来,希望能帮助到小伙伴们,现在觉得还是挺简单的。第一步:首先是注册,这就是我踩的最大的一个坑,导致我一天都没有上传成功。网上说的都是去jcenter的网站上注册就 查看详情
无私分享:从入门到精通asp.netmvc从0开始,一起搭框架做项目(11)文件管理
...本人同意,禁止转载!http://yuangang.cnblogs.com希望大家好好一步一步做,所有的技术和项目,都毫无保留的提供,希望大家能自己跟着做一套,还有,请大家放心,只要大家喜欢,有人需要,绝对不会烂尾,我会坚持写完~如果你... 查看详情
❤️python从入门到精通(二十七)更进一步的了解pillow吧!(代码片段)
...农飞哥,感谢您阅读本文,欢迎一键三连哦。进一步介绍Pillow库的使用,详细了解干货满满,建议收藏,需要用到时常看看。小伙伴们如有问题及需要,欢迎踊跃留言哦~~~。文章目录前言Image模块读取网页... 查看详情