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

有限公司技术支持 东莞网站建设青海建筑人才网

有限公司技术支持 东莞网站建设,青海建筑人才网,vs2017js网站开发方法,古镇免费网站建设目录 1.playbook相关知识 1.1 playbook 的简介 1.2 playbook的 各部分组成 2. 基础的playbook剧本编写实例 2.1 playbook编写Apache安装剧本#xff08;yum方式安装#xff09; 报错集#xff1a; 实例2#xff1a;playbook编写nginx 的yum安装并且能修改其监听端口的…目录 1.playbook相关知识 1.1 playbook 的简介 1.2 playbook的 各部分组成 2. 基础的playbook剧本编写实例 2.1 playbook编写Apache安装剧本yum方式安装 报错集 实例2playbook编写nginx 的yum安装并且能修改其监听端口的剧本 实例3定义、引用变量  实例4指定远程主机sudu切换用户 实例5when条件判断 实例6 迭代 实例7Templates 模块 实例8tags 模块 3.Roles 模块 3.1 roles 的目录结构 3.2 roles 内各目录含义解释 1.playbook相关知识 1.1 playbook 的简介 playbook是 一个不同于使用Ansible命令行执行方式的模式其功能更强大灵活。简单来说playbook是一个非常简单的配置管理和多主机部署系统不同于任何已经存在的模式可作为一个适合部署复杂应用程序的基础。Playbook可以定制配置可以按照指定的操作步骤有序执行支持同步和异步方式。我们完成一个任务例如安装部署一个httpd服务我们需要多个模块一个模块也可以称之为task提供功能来完成。而playbook就是组织多个task的容器他的实质就是一个文件有着特定的组织格式它采用的语法格式是YAMLYet Another Markup Language。 1.2 playbook的 各部分组成 1Tasks任务即通过 task 调用 ansible 的模板将多个操作组织在一个 playbook 中运行 2Variables变量 3Templates模板 4Handlers处理器当changed状态条件满足时notify触发执行的操作 5Roles角色 2. 基础的playbook剧本编写实例 playbook中运用的模块就是ansible中的模块就像docker-compose一样将docker操作容器的指令归纳为一个yaml文件开启运行yaml中的指令模块就能按照预设计的方向去完成。  2.1 playbook编写Apache安装剧本yum方式安装 剧本编写实现的需求对Ansible管理的所有的webservers组的成员yum安装最新版本的apache服务软件并进行相应环境的调整确保webservers的apache服务能够正常运行并设置开机自启  cd /etc/ansible #在ansible的所在目录中创建该项目的目录 mkdir apache vim apache.yaml --- - name: apache yum applygather_facts: falsehosts: webserversremote_user: roottasks:- name: test connectionping:- name: stop firewalldservice: namefirewalld statestopped- name: stop selinuxcommand: /usr/sbin/setenforce 0ignore_errors: true- name: yum install apache serviceyum: namehttpd statelatest- name: start apache serviceservice: namehttpd statestarted enabledyes 运行剧本 //运行playbook ansible-playbook apache.yaml//补充参数 -k–ask-pass用来交互输入ssh密码 -K-ask-become-pass用来交互输入sudo密码 -u指定用户 ansible-playbook apache.yaml --syntax-check #检查yaml文件的语法是否正确 ansible-playbook apache.yaml --list-task #检查tasks任务 ansible-playbook apache.yaml --list-hosts #检查生效的主机 ansible-playbook apache.yaml --start-at-taskinstall httpd #指定从某个task开始运行 报错集 实例2playbook编写nginx 的yum安装并且能修改其监听端口的剧本 需求通过yum安装nginx服务并且能够控制被管理的主机的服务的开启按照预设的配置在运行时的端口。 在编写剧本前需要准备相应的两个文件一个为nginx的yum源。一个为相对应的主配置文件在主配置文件中修改其端口在将该配置移至被管理主机中作为运行启动时的默认配置  mkdir /etc/ansible/nginxvim nginx.yaml --- - name: nginx scriptgather_facts: falsehosts: webserversremote_user: roottasks:- name: test connectionping:- name: stop firewalldservice: namefirewalld statestopped enabledno- name: stop selinuxcommand: /usr/sbin/setenforce 0ignore_errors: true- name: prepare nginx repocopy: src/etc/ansible/nginx/nginx.repo dest/etc/yum.repos.d/nginx.repo- name: install nginxyum: namenginx statelatest- name: change portcopy: src/opt/default.conf dest/etc/nginx/conf.d/default.confnotify: restart nginx- name: start nginxservice: namenginx statestarted enabledyeshandlers:- name: restart nginxservice: namenginx staterestarted 实例3定义、引用变量  - name: second playhosts: dbserversremote_user: rootvars: #定义变量- groupname: mysql #格式为 key: value- username: nginxtasks:- name: create groupgroup: name{{groupname}} systemyes gid306 #使用 {{key}} 引用变量的值- name: create useruser: name{{username}} uid306 group{{groupname}} - name: copy filecopy: content{{ansible_default_ipv4}} dest/opt/vars.txt #在setup模块中可以获取facts变量信息ansible-playbook test1.yaml -e usernamenginx #在命令行里定义变量实例4指定远程主机sudu切换用户 --- - hosts: dbserversremote_user: zhangsan become: yes #2.6版本以后的参数之前是sudo意思为切换用户运行become_user: root #指定sudo用户为root 执行playbook时ansible-playbook test1.yml -K 密码 实例5when条件判断 在Ansible中提供的唯一一个通用的条件判断是when指令当when指令的值为true时则该任务执行否则不执行该任务。//when一个比较常见的应用场景是实现跳过某个主机不执行任务或者只有满足条件的主机执行任务 vim test2.yaml --- - hosts: allremote_user: roottasks:- name: shutdown host command: /sbin/shutdown -r nowwhen: ansible_default_ipv4.address 192.168.10.14 #when指令中的变量名不需要手动加上 {{}} 或 when: inventory_hostname 主机名ansible-playbook test2.yaml实例6 迭代 Ansible提供了很多种循环结构一般都命名为with_items作用等同于 loop 循环。 vim test3.yaml --- - name: play1hosts: dbserversgather_facts: falsetasks: - name: create directoriesfile:path: {{item}}state: directorywith_items: #等同于 loop:- /tmp/test1- /tmp/test2- name: add usersuser: name{{item.name}} statepresent groups{{item.groups}}with_items:- name: test1groups: wheel- name: test2groups: root 或with_items:- {name:test1, groups:wheel}- {name:test2, groups:root}ansible-playbook test3.yam 实例7Templates 模块 Jinja是基于Python的模板引擎。Template类是Jinja的一个重要组件可以看作是一个编译过的模板文件用来产生目标文本传递Python的变量给模板去替换模板中的标记。1.先准备一个以 .j2 为后缀的 template 模板文件设置引用的变量 cp /etc/httpd/conf/httpd.conf /opt/httpd.conf.j2vim /opt/httpd.conf.j2 Listen {{http_port}} #42行修改 ServerName {{server_name}} #95行修改 DocumentRoot {{root_dir}} #119行修改2.修改主机清单文件使用主机变量定义一个变量名相同而值不同的变量 vim /etc/ansible/hosts [webservers] 192.168.10.14 http_port192.168.10.14:80 server_namewww.accp.com:80 root_dir/etc/httpd/htdocs[dbservers] 192.168.10.15 http_port192.168.0.15:80 server_namewww.benet.com:80 root_dir/etc/httpd/htdocs3.编写 playbook vim apache.yaml --- - hosts: allremote_user: rootvars:- package: httpd- service: httpdtasks:- name: install httpd packageyum: name{{package}} statelatest- name: install configure filetemplate: src/opt/httpd.conf.j2 dest/etc/httpd/conf/httpd.conf #使用template模板notify:- restart httpd- name: create root dirfile: path/etc/httpd/htdocs statedirectory- name: start httpd serverservice: name{{service}} enabledtrue statestartedhandlers:- name: restart httpdservice: name{{service}} staterestartedansible-playbook apache.yaml 实例8tags 模块 可以在一个playbook中为某个或某些任务定义“标签”在执行此playbook时通过ansible-playbook命令使用--tags选项能实现仅运行指定的tasks。 playbook还提供了一个特殊的tags为always。作用就是当使用always当tags的task时无论执行哪一个tags时定义有always的tags都会执行。vim webhosts.yaml --- - hosts: webserversremote_user: roottasks:- name: Copy hosts filecopy: src/etc/hosts dest/opt/hoststags:- only #可自定义- name: touch filefile: path/opt/testhost statetouchtags:- always #表示始终要运行的代码ansible-playbook webhosts.yaml --tagsonlyvim dbhosts.yaml --- - hosts: dbserversremote_user: roottasks:- name: Copy hosts filecopy: src/etc/hosts dest/opt/hoststags:- only- name: touch filefile: path/opt/testhost statetouchansible-playbook dbhosts.yaml --tagsonly //分别去两台被管理主机上去查看文件创建情况 3.Roles 模块 Ansible为了层次化、结构化地组织Playbook使用了角色rolesroles可以根据层次型结构自动装载变量文件、task以及handlers等。简单来讲roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中并可以便捷地include它们。roles一般用于基于主机构建服务的场景中但也可以用于构建守护进程等场景中。 3.1 roles 的目录结构 cd /etc/ansible/ tree roles/ roles/ ├── web/ │ ├── files/ │ ├── templates/ │ ├── tasks/ │ ├── handlers/ │ ├── vars/ │ ├── defaults/ │ └── meta/ └── db/├── files/├── templates/├── tasks/├── handlers/├── vars/├── defaults/└── meta/ 3.2 roles 内各目录含义解释 ●files 用来存放由 copy 模块或 script 模块调用的文件。 ●templates 用来存放 jinjia2 模板template 模块会自动在此目录中寻找 jinjia2 模板文件。 ●tasks 此目录应当包含一个 main.yml 文件用于定义此角色的任务列表此文件可以使用 include 包含其它的位于此目录的 task 文件。 ●handlers 此目录应当包含一个 main.yml 文件用于定义此角色中触发条件时执行的动作。 ●vars 此目录应当包含一个 main.yml 文件用于定义此角色用到的变量。 ●defaults 此目录应当包含一个 main.yml 文件用于为当前角色设定默认变量。 ●meta 此目录应当包含一个 main.yml 文件用于定义此角色的特殊设定及其依赖关系。 //在一个 playbook 中使用 roles 的步骤 1创建以 roles 命名的目录 mkdir /etc/ansible/roles/ -p #yum装完默认就有2创建全局变量目录可选 mkdir /etc/ansible/group_vars/ -p touch /etc/ansible/group_vars/all #文件名自己定义引用的时候注意3在 roles 目录中分别创建以各角色名称命令的目录如 httpd、mysql mkdir /etc/ansible/roles/httpd mkdir /etc/ansible/roles/mysql4在每个角色命令的目录中分别创建files、handlers、tasks、templates、meta、defaults和vars目录用不到的目录可以创建为空目录也可以不创建 mkdir /etc/ansible/roles/httpd/{files,templates,tasks,handlers,vars,defaults,meta} mkdir /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta}5在每个角色的 handlers、tasks、meta、defaults、vars 目录下创建 main.yml 文件千万不能自定义文件名 touch /etc/ansible/roles/httpd/{defaults,vars,tasks,meta,handlers}/main.yml touch /etc/ansible/roles/mysql/{defaults,vars,tasks,meta,handlers}/main.yml6修改 site.yml 文件针对不同主机去调用不同的角色 vim /etc/ansible/site.yml --- - hosts: webserversremote_user: rootroles:- httpd - hosts: dbserversremote_user: rootroles:- mysql7运行 ansible-playbook cd /etc/ansible ansible-playbook site.yml示例 mkdir /etc/ansible/roles/httpd/{files,templates,tasks,handlers,vars,defaults,meta} -p mkdir /etc/ansible/roles/mysql/{files,templates,tasks,handlers,vars,defaults,meta} -p mkdir /etc/ansible/roles/php/{files,templates,tasks,handlers,vars,defaults,meta} -ptouch /etc/ansible/roles/httpd/{defaults,vars,tasks,meta,handlers}/main.yml touch /etc/ansible/roles/mysql/{defaults,vars,tasks,meta,handlers}/main.yml touch /etc/ansible/roles/php/{defaults,vars,tasks,meta,handlers}/main.yml
http://www.zqtcl.cn/news/257521/

相关文章:

  • 张店网站开发招聘怎样做网站变手机软件
  • 聊城做网站的公司流程网页设计网站模板
  • 宿迁网站建设哪家专业做网站宁夏
  • 静态网站规范贵州城乡建设厅施工员报名网站
  • 湖北长安建设集团股份有限公司网站wordpress主题套用
  • 本地门户网站系统小米应用商店
  • 网站建设怎么用宁波建设网网点
  • 购物网站二级页面模板国家企业信用公示信息系统官网app
  • tp框架做餐饮网站快速建站教程网
  • php自己做网站wordpress下拉刷新
  • 怎么提高网站收录量专业网站优化公司
  • 重庆建站费用素材最多的网站
  • 银联支付网站建设html5网站模板
  • iis建好的网站套用模板上海网站建设 迈若
  • 无限极企业微信app下载安装网站改版seo
  • asp网站增加新栏目在哪添加贵州网站建设 零玖伍壹网络
  • 外包做一个网站一般费用手机wap网站模板 带后台
  • 西宁专业企业网站建设溧阳免费做网站
  • 网站开发有什么注意的爱网聊的人
  • 创建网站站点服务专业公司网站建设服务
  • 做的最好的视频教学网站南阳网站seo推广公司哪家好
  • 大气集团企业网站模板seo网站是什么意思
  • 张家口网站建设公司柒零叁网站建设湖南长沙
  • 网站建设合同或方案书手机链接ppt在哪个网站做
  • 宁波专业做网站免费网站模板大全
  • 高站网站建设平台设计标准
  • api网站模板wordpress 函数api文件
  • 泉州哪个公司网站做的好百度反馈中心
  • 宽屏蓝色企业网站源码软件工程师英文
  • 中企动力网站建设公司网站的设计路线