当前位置: 首页 > news >正文

原创网站模版网站建设推推蛙

原创网站模版,网站建设推推蛙,315网站专题怎么做,做网站端口内容无法替换目录 Playbooks中tasks语法使用 1、file 创建文件#xff1a;touch 创建目录#xff1a;directory 2、lineinfile 修改文件某一行文本 3、replace 根据正则表达式替换文件内容#xff08;指定换字符串#xff09; 5、template/copy 模板作用类似于copy#xff0… 目录 Playbooks中tasks语法使用 1、file 创建文件touch 创建目录directory 2、lineinfile 修改文件某一行文本 3、replace 根据正则表达式替换文件内容指定换字符串 5、template/copy 模板作用类似于copy可将文件分发到不同节点上可以在模板文件中引入变量 8、wait_for 等待某些操作完成以后再进行后续操作 9、when 条件判断满足后再执行任务 环境准备 下载ansible 配置两台web主机一台ansible服务器 ansible主机ip192.168.158.150 web1主机IP192.168.158.158 web2主机IP192.168.158.161 修改好配置文件 关闭防火墙和安全上下文 [rootbogon ~]# hostnamectl set-hostname ansible [rootbogon ~]# setenforce 0 ansible主机 创建playbook编辑yml文件 [rootbogon ~]# mkdir playbook [rootbogon ~]# cd playbook/ [rootbogon playbook]# vim test.yml 操作如下 Playbooks中tasks语法使用 1、file 操作文件比如创建文件或目录、删除文件或目录、修改文件权限等 常用参数 path指定要操作的文件或目录 state参数非常灵活可以包含的值及含义如下 directory - 与path结合说明我们要操作的是一个目录 touch - 与path结合说明我们要操作的是一个文件 link - 创建软连接 hard - 创建硬链接 absent - 删除目标 src当state设置为link或hard创建链接时用于说明链接哪个文件指定链接源 force值为yes表示强制创建 owner指定被操作文件的属主 group指定被操作文件的属组 mode指定被操作文件的权限 示例 - name: 创建一个testfile文件file: path/tmp/testfile statetouch - name: 创建一个目录并指定目录权限file: path/tmp/data statedirectory mode0755 - name: 删除一个目录file: path/tmp/data stateabsent   - name: recurse默认为no指定为yes代表以递归方式指定文件权限file: dest/user/bin mode0755 recurseyes 示例 创建文件touch vim test.yml 测试成功 [rootbogon playbook]# ansible-playbook -C test.yml PLAY [adda] **********************************************************************TASK [Gathering Facts] *********************************************************** ok: [192.168.158.161] ok: [192.168.158.158]TASK [在/opt/目录下创建文件f1.txt文件] ******************************************* changed: [192.168.158.161] changed: [192.168.158.158]PLAY RECAP *********************************************************************** 192.168.158.158 : ok2 changed1 unreachable0 failed0 skipped0 rescued0 ignored0 192.168.158.161 : ok2 changed1 unreachable0 failed0 skipped0 rescued0 ignored0 翻译 执行结果汇总 *********************************************************************** 192.168.158.158 : 成功2 已变更1 不可达0 失败0 跳过0 救援0 忽略0 各字段含义详解 ​ok2​ (成功2) 该主机上成功完成了2个任务无论是否产生变更 ​changed1​ (已变更1) 其中有1个任务实际修改了系统状态例如创建了文件/安装了软件 ​unreachable0​ (不可达0) 主机连接正常SSH/WinRM等连接成功 ​failed0​ (失败0) 没有任务执行失败 ​skipped0​ (跳过0) 没有任务因条件不满足而被跳过 ​rescued0​ (救援0) 没有触发任何错误恢复机制block-rescue结构 ​ignored0​ (忽略0) 没有主动忽略任何错误 执行成功 [rootbogon playbook]# ansible-playbook test.yml PLAY [adda] **********************************************************************TASK [Gathering Facts] *********************************************************** ok: [192.168.158.161] ok: [192.168.158.158]TASK [在/opt/目录下创建文件f1.txt文件] ******************************************* changed: [192.168.158.158] changed: [192.168.158.161]PLAY RECAP *********************************************************************** 192.168.158.158 : ok2 changed1 unreachable0 failed0 skipped0 rescued0 ignored0 192.168.158.161 : ok2 changed1 unreachable0 failed0 skipped0 rescued0 ignored0 查验已成功创建 web主机 [rootweb1 ~]# cd /opt/ [rootweb1 opt]# ls f1.txt 创建目录directory [rootbogon playbook]# vim test.yml--- - name: addahosts: alltasks:- name: 在/opt/目录下创建文件f1.txt文件file:path: /opt/f1.txtstate: touch- name: 在/opt/目录下创建dir目录file:path: /opt/dir/state: directory 测试 [rootbogon playbook]# ansible-playbook -C test.yml PLAY [adda] **********************************************************************TASK [Gathering Facts] *********************************************************** ok: [192.168.158.161] ok: [192.168.158.158]TASK [在/opt/目录下创建文件f1.txt文件] ******************************************* changed: [192.168.158.161] changed: [192.168.158.158]TASK [在/opt/目录下创建dir目录] ************************************************** changed: [192.168.158.158] changed: [192.168.158.161]PLAY RECAP *********************************************************************** 192.168.158.158 : ok3 changed2 unreachable0 failed0 skipped0 rescued0 ignored0 192.168.158.161 : ok3 changed2 unreachable0 failed0 skipped0 rescued0 ignored0 执行 [rootbogon playbook]# ansible-playbook test.yml PLAY [adda] **********************************************************************TASK [Gathering Facts] *********************************************************** ok: [192.168.158.161] ok: [192.168.158.158]TASK [在/opt/目录下创建文件f1.txt文件] ******************************************* changed: [192.168.158.161] changed: [192.168.158.158]TASK [在/opt/目录下创建dir目录] ************************************************** changed: [192.168.158.158] changed: [192.168.158.161]PLAY RECAP *********************************************************************** 192.168.158.158 : ok3 changed2 unreachable0 failed0 skipped0 rescued0 ignored0 192.168.158.161 : ok3 changed2 unreachable0 failed0 skipped0 rescued0 ignored0 查验 [rootweb1 opt]# ls dir f1.txt 2、lineinfile 修改文件某一行文本 常用参数 *   path操作的文件路径 *   regexp正则表达式要替换的内容 *   line指定修改后的文本内容 *   state当设置为absent代表删除匹配的行 *   backrefs默认为no当未匹配到时line对应的内容会被插入到文本的末尾为yes表示不插入 *   insertafter借助insertafter参数可以将文本插入到“指定的行”之后 *   insertbefore借助insertbefore参数可以将文本插入到“指定的行”之前 *   backup是否进行备份 *   create操作的文件不存在时是否创建 示例 - name: 替换文件中包含line123的行为testlinelineinfile: path/tmp/test regexp^line linetestlinevim  test.yml         注意缩进 --- - name: addagather_facts: nohosts: alltasks:- name: 在/opt/目录下创建文件f1.txt文件file:path: /opt/f1.txtstate: touch- name: 在/opt/目录下创建dir目录file:path: /opt/dir/state: directory- name: 精确替换包含line123的行lineinfile:path: /opt/f1.txtregexp: ^lineline: testtags: t1 [rootweb1 opt]# cat f1.txt line1231 lineoqoweiqwe opoiline 测试     只在web1上f1.txt有内容 [rootansible playbook]# ansible-playbook -C -t t1 test.ymlPLAY [adda] **********************************************************************TASK [Gathering Facts] *********************************************************** ok: [192.168.158.158] ok: [192.168.158.161]TASK [精确替换包含line123的行] *************************************************** changed: [192.168.158.158] ok: [192.168.158.161]PLAY RECAP *********************************************************************** 192.168.158.158 : ok2 changed1 unreachable0 failed0 skipped0 rescued0 ignored0 192.168.158.161 : ok2 changed0 unreachable0 failed0 skipped0 rescued0 ignored0 执行成功 [rootansible playbook]# ansible-playbook -t t1 test.ymlPLAY [adda] **********************************************************************TASK [Gathering Facts] *********************************************************** ok: [192.168.158.158] ok: [192.168.158.161]TASK [精确替换包含line123的行] *************************************************** ok: [192.168.158.161] changed: [192.168.158.158]PLAY RECAP *********************************************************************** 192.168.158.158 : ok2 changed1 unreachable0 failed0 skipped0 rescued0 ignored0 192.168.158.161 : ok2 changed0 unreachable0 failed0 skipped0 rescued0 ignored0 查验  因为没有循环一次只能执行一个 [rootweb1 opt]# cat f1.txt line1231 test opoiline [rootweb1 opt]# cat f1.txt test test opoiline 第二次 3、replace 根据正则表达式替换文件内容指定换字符串 常用参数 path操作文件的路径 regexp正则表达式 replace指定最终要替换的字符串 backup是否在修改文件之前对文件进行备份yes是进行备份 vim test.yml  - name: 将/opt/f1.txt文件中的test替换为linereplace:path: /opt/f1.txtregexp: testreplace: linetags: t2 测试 [rootansible playbook]# ansible-playbook -C -t t2 test.ymlPLAY [adda] **********************************************************************TASK [Gathering Facts] *********************************************************** ok: [192.168.158.158] ok: [192.168.158.161]TASK [将/opt/f1.txt文件中的test替换为line] *************************************** changed: [192.168.158.161] changed: [192.168.158.158]PLAY RECAP *********************************************************************** 192.168.158.158 : ok2 changed1 unreachable0 failed0 skipped0 rescued0 ignored0 192.168.158.161 : ok2 changed1 unreachable0 failed0 skipped0 rescued0 ignored0 执行 [rootansible playbook]# ansible-playbook -t t2 test.ymlPLAY [adda] **********************************************************************TASK [Gathering Facts] *********************************************************** ok: [192.168.158.161] ok: [192.168.158.158]TASK [将/opt/f1.txt文件中的test替换为line] *************************************** changed: [192.168.158.158] changed: [192.168.158.161]PLAY RECAP *********************************************************************** 192.168.158.158 : ok2 changed1 unreachable0 failed0 skipped0 rescued0 ignored0 192.168.158.161 : ok2 changed1 unreachable0 failed0 skipped0 rescued0 ignored0 查验 5、template/copy 模板作用类似于copy可将文件分发到不同节点上可以在模板文件中引入变量 常用参数 src: 源文件路径 dest目标文件路径 group目标文件属组 mode目标文件权限 backup如果目标文件存在则先备份目标文件 force是否强制覆盖默认为yes validate在复制之前通过命令验证目标文件如果验证通过则复制 示例 - template: src/mytemplates/tt.j2 dest/etc/file.conf - template: src/mytemplates/tt.j2 dest/etc/file.conf groupwheel mode0644 - template: src/mytemplates/suzuka.j2 dest/etc/suzuka validatevisudo -cf %s 示例 第一步先从远程主机拷贝一份nginx配置文件 [rootansible playbook]# scp 192.168.158.158:/etc/nginx/nginx.conf ./ nginx.conf 100% 2334 1.0MB/s 00:00 第二步编辑yml文件 mag输出文本 vim  test.yml         - name: print facts variabledebug:msg: The {{ ansible_default_ipv4.interface }} IPV4 address is {{ ansible_default_ipv4.address }} 第三步执行 [rootansible playbook]# ansible-playbook -t t3 test.ymlPLAY [adda] **********************************************************************TASK [Gathering Facts] *********************************************************** ok: [192.168.158.158] ok: [192.168.158.161]TASK [print facts variable] ****************************************************** ok: [192.168.158.158] {msg: The default IPV4 address is 192.168.158.158 } ok: [192.168.158.161] {msg: The default IPV4 address is 192.168.158.161 }PLAY RECAP *********************************************************************** 192.168.158.158 : ok2 changed0 unreachable0 failed0 skipped0 rescued0 ignored0 192.168.158.161 : ok2 changed0 unreachable0 failed0 skipped0 rescued0 ignored0 我们可以将default改为变量 第四步过滤之后拷贝到一个文件里 [rootansible playbook]# ansible 192.168.158.158 -m setup | grep -n ansible_default_ipv4 57: ansible_default_ipv4: { [rootansible playbook]# ansible 192.168.158.158 -m setup facts.txt interface是ens33 第五步将变量引用到文本里 - name: print facts variabledebug:msg: The {{ ansible_default_ipv4.interface }} IPV4 address is {{ ansible_default_ipv4.address }}tags: t3- name: 拷贝nginx配置文件template: src./nginx.j2 dest/etc/nginx/nginx.conftags: t4 执行看一下 变量引用了 [rootansible playbook]# ansible-playbook -t t3 test.ymlPLAY [adda] **********************************************************************TASK [Gathering Facts] *********************************************************** ok: [192.168.158.158] ok: [192.168.158.161]TASK [print facts variable] ****************************************************** ok: [192.168.158.158] {msg: The ens33 IPV4 address is 192.168.158.158 } ok: [192.168.158.161] {msg: The ens33 IPV4 address is 192.168.158.161 }PLAY RECAP *********************************************************************** 192.168.158.158 : ok2 changed0 unreachable0 failed0 skipped0 rescued0 ignored0 192.168.158.161 : ok2 changed0 unreachable0 failed0 skipped0 rescued0 ignored0 将变量引用到nginx配置文件里 [rootansible playbook]# ls facts.txt nginx.conf test.yml [rootansible playbook]# vim nginx.conf ----------------------server {listen {{ ansible_default_ipv4.address }}:80;listen [::]:80;server_name _;root /usr/share/nginx/html; ------------------------- 修改文件后缀 [rootansible playbook]# mv nginx.conf nginx.j2 [rootansible playbook]# ls facts.txt nginx.j2 test.yml 执行成功 [rootansible playbook]# ansible-playbook -t t4 test.ymlPLAY [adda] **********************************************************************TASK [Gathering Facts] *********************************************************** ok: [192.168.158.158] ok: [192.168.158.161]TASK [拷贝nginx配置文件] ********************************************************* changed: [192.168.158.161] changed: [192.168.158.158]PLAY RECAP *********************************************************************** 192.168.158.158 : ok2 changed1 unreachable0 failed0 skipped0 rescued0 ignored0 192.168.158.161 : ok2 changed1 unreachable0 failed0 skipped0 rescued0 ignored0 去web主机上查验nginx配置文件 成功引用 8、wait_for 等待某些操作完成以后再进行后续操作 **常用参数** *   connect\_timeout在下一个任务执行之前等待连接的超时时间 *   delay指在等待过程中轮询的时间间隔 *   host等待的主机地址默认是127.0.0.1 *   port等待的主机端口 *   path文件路径只有当这个文件存在时才开始执行下一个任务 *   state等待的状态值可以为started/stoped/absent/present *   timeout等待的超时时间默认300秒 **示例** - name: 每隔10s检查一次等待8080端口正常监听才开始下一个任务直到超时   wait_for: port8080 statestarted delay10 - name: 等待文件创建   wait_for: path/tmp/tt   示例 此时web两台主机都是启用nginx了的此时80号端口已被监听 vim test.yml - name: 每隔10s检查一次等待80端口正常监听才开始下一个任务直到超时wait_for: port80 statestarted delay10- name: 如果上个任务为真执行下一个,创建文件file:path: /opt/1.txtstate: touch 当80号端口被监听后才执行下一个任务创建文件 执行 [rootansible playbook]# ansible-playbook test.yml PLAY [adda] **********************************************************************TASK [Gathering Facts] *********************************************************** ok: [192.168.158.158] ok: [192.168.158.161]TASK [每隔10s检查一次等待80端口正常监听才开始下一个任务直到超时] *********** ok: [192.168.158.158] ok: [192.168.158.161]TASK [如果上个任务为真执行下一个,创建文件] *************************************** changed: [192.168.158.161] changed: [192.168.158.158]PLAY RECAP *********************************************************************** 192.168.158.158 : ok3 changed1 unreachable0 failed0 skipped0 rescued0 ignored0 192.168.158.161 : ok3 changed1 unreachable0 failed0 skipped0 rescued0 ignored0 查验成功执行 9、when 条件判断满足后再执行任务 示例 when是条件 - name: 判断变量tt是否定义shell: echo Ive got {{ tt }}when: tt is defined 当主机名是web1时下载httpd软件包 (此时只有一台web1另一台web2) vim test.yml - name: outputdebug:msg: {{ ansible_hostname }}- name: 条件任务yum:name: httpdstate: present when: ansible_hostname web1 执行成功 [rootansible playbook]# ansible-playbook test.yml PLAY [adda] *************************************************************************************************TASK [Gathering Facts] ************************************************************************************** ok: [192.168.158.158] ok: [192.168.158.161]TASK [output] *********************************************************************************************** ok: [192.168.158.158] {msg: web1 } ok: [192.168.158.161] {msg: agent2 }TASK [条件任务] ********************************************************************************************* skipping: [192.168.158.161] changed: [192.168.158.158]PLAY RECAP ************************************************************************************************** 192.168.158.158 : ok3 changed1 unreachable0 failed0 skipped0 rescued0 ignored0 192.168.158.161 : ok2 changed0 unreachable0 failed0 skipped1 rescued0 ignored0 去web主机查验 hostname为web1的主机安装了httpd软件包
http://www.pierceye.com/news/140757/

相关文章:

  • 潍坊市高新区建设局网站hdsyscms企业建站系统
  • 网站运营做产品需要哪些知识开启wordpress多站点
  • flash网站源码 免费怎么可以自己制作网站
  • wordpress文章站主题如何删除自己建的网站
  • 徐州网站建设哪家好薇深圳找工作的网站
  • 局域网站点建设方案东莞企业营销型网站
  • 中国光大国际建设工程公司网站自己开店
  • 手机建站程序昆山设计公司
  • 网站泛解析中国新闻社是国企还是私企
  • dw做静态网站手机app制作视频教程
  • 惠州做网站公司网页游戏排行榜前十名歌
  • 会ps的如何做网站高等教材建筑电气久久建筑网
  • 甘肃住房城乡建设厅网站wordpress风格化页面
  • 起名网站建设免费找素材软件
  • 网站基本信息设置链接搜索
  • 广州海珠网站开发营销策划
  • 医院网站制作公司专门做spa的网站
  • 企业网页制作与网站设计网站必须天天更新吗
  • 乌苏市城乡建设局网站外贸网网站建设
  • html5网站开发实例书籍凡科建站代理
  • 与建设部网站网站注册登录页面设计
  • 企业网站推广计划免费最新如何建设网站教程视频
  • 17一起做网站普宁站好看个人网页模板
  • 民治营销网站专业网站建设价格最优
  • 免费的html网站做柜子喜欢上哪些网站看
  • 网站没备案怎么做加速现代装修风格三室两厅效果图
  • 互助平台网站建设网上商城怎么购物
  • 百度知道山东网站建设建设网站成本预算
  • 人人做免费网站网站建站是 什么
  • 以背景做网站视频为单位网站建设实施方案