网站内容优化怎么去优化呢,网站经营性备案多少钱,修改wordpress主页,永丰县城乡建设局网站一、Playbook简介 playbook是ansible用于配置#xff0c;部署和管理托管主机剧本#xff0c;通过playbook的详细描述#xff0c;执行其中一系列tasks#xff0c;可以让远程主机达到预期状态#xff0c;也可以说#xff0c;playbook字面意思是剧本#xff0c;现实…一、Playbook简介playbook是ansible用于配置部署和管理托管主机剧本通过playbook的详细描述执行其中一系列tasks可以让远程主机达到预期状态也可以说playbook字面意思是剧本现实中由演员按剧本表演在ansible中由计算机进行安装部署应用提供对外服务以及组织计算机处理各种各样的事情。ansible使用playbook来管理自动化taskplaybook是yaml格式的文件其基本内容可以认为是多条ansible的ad-hoc的语句组成。我们完成一个任务例如安装部署一个httpd服务我们需要多个模块一个模块也可以称之为task提供功能来完成。而playbook就是组织多个task的容器他的实质就是一个文件是用yamlYet Another Markup Language语言编写的文件有着特定的组织格式。YAML 是专门用来写配置文件的语言非常简洁和强大远比 JSON 格式方便YAML语法能够简单的表示散列表字典等数据结构。playbook命令根据自上而下的顺序依次执行。同时playbook开创了很多特性,它可以允许你传输某个命令的状态到后面的指令,如你可以从一台机器的文件中抓取内容并附为变量,然后在另一台机器中使用,这使得你可以实现一些复杂的部署机制,这是ansible命令无法实现的。二、Playbook核心元素Hosts 执行的远程主机列表Tasks 任务集Varniables 内置变量或自定义变量在playbook中调用Templates 模板即使用模板语法的文件后缀.j2比如配置文件等Handlers 和notify结合使用由特定条件触发的操作满足条件方才执行否则不执行tags 标签指定某条任务执行用于选择运行playbook中的部分代码三、Playbook语法playbook使用yaml语法格式后缀可以是yaml,也可以是yml一般情况下一个playbook需要使用---开始。在单一一个playbook文件中可以连续三个连子号(---)区分多个play。还有选择性的连续三个点号(...)用来表示play的结尾也可省略。次行开始正常写playbook的内容一般都会写上描述该playbook的功能使用#号注释代码缩进必须统一不能空格和tab混用缩进的级别也必须是一致的同样的缩进代表同样的级别程序判别配置的级别是通过缩进结合换行实现的YAML文件内容和Linux系统大小写判断方式保持一致是区分大小写的k/v的值均需大小写敏感k/v的值可同行写也可以换行写。同行使用span stylebackground-color:red;: /span分隔v可以是个字符串也可以是一个列表[]四、Playbook的运行方式通过ansible-playbook命令运行ansible-playbook filename.yml ... [options]常用命令:ansible-playbook filename.yml [options] # ssh 连接的用户名 -u REMOTE_USER, --userREMOTE_USER # ssh登录认证密码 -k, --ask-pass # sudo 到root用户相当于Linux系统下的sudo命令 -s, --sudo # sudo 到对应的用户 -U SUDO_USER, --sudo-userSUDO_USER # 用户的密码—sudo时使用 -K, --ask-sudo-pass # ssh 连接超时默认 10 秒 -T TIMEOUT, --timeoutTIMEOUT # 指定该参数后执行 playbook 文件不会真正去执行而是模拟执行一遍然后输出本次执行会对远程主机造成的修改 -C, --check # 设置额外的变量如: keyvalue 形式 或者 YAML or JSON以空格分隔变量或用多个-e -e EXTRA_VARS, --extra-varsEXTRA_VARS # 进程并发处理默认 5 -f FORKS, --forksFORKS # 指定 hosts 文件路径默认 default/etc/ansible/hosts -i INVENTORY, --inventory-fileINVENTORY # 指定一个 pattern对- hosts:匹配到的主机再过滤一次 -l SUBSET, --limitSUBSET # 只打印有哪些主机会执行这个 playbook 文件不是实际执行该 playbook --list-hosts # 列出该 playbook 中会被执行的 task --list-tasks # 私钥路径 --private-keyPRIVATE_KEY_FILE # 同一时间只执行一个 task每个 task 执行前都会提示确认一遍 --step # 只检测 playbook 文件语法是否有问题不会执行该 playbook --syntax-check # 当 play 和 task 的 tag 为该参数指定的值时才执行多个 tag 以逗号分隔 -t TAGS, --tagsTAGS # 当 play 和 task 的 tag 不匹配该参数指定的值时才执行 --skip-tagsSKIP_TAGS # 输出更详细的执行过程信息-vvv可得到所有执行过程信息。 -v, --verbose五、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 recurseyes2、lineinfile修改文件某一行文本常用参数:path: 操作的文件路径regexp: 正则表达式要替换的内容line: 指定修改后的文本内容state: 当设置为absent代表删除匹配的行backrefs: 默认为no当未匹配到时line对应的内容会被插入到文本的末尾为yes表示不插入insertafter: 借助insertafter参数可以将文本插入到“指定的行”之后insertbefore: 借助insertbefore参数可以将文本插入到“指定的行”之前backup: 是否进行备份create: 操作的文件不存在时是否创建示例:- name: 替换文件中包含line123的行为testline lineinfile: path/tmp/test regexp^line linetestline3、replace根据正则表达式替换文件内容常用参数:path: 操作文件的路径regexp: 正则表达式replace: 指定最终要替换的字符串backup: 是否在修改文件之前对文件进行备份yes是进行备份简单示例:- name: 将/tmp/test文件中的ABC替换成abc replace: path/tmp/test regexpABC replaceabc4、shell执行脚本命令示例:- shell: mkdir /tmp/mytest - shell: echo export JAVA_HOME/opt/jdk /etc/profile5、template/copy模板作用类似于copy可将文件分发到不同节点上可以在模板文件中引入变量常用参数:src: 源文件路径dest: 目标文件路径group: 目标文件属组mode: 目标文件权限backup: 如果目标文件存在则先备份目标文件force: 是否强制覆盖默认为yesvalidate: 在复制之前通过命令验证目标文件如果验证通过则复制示例:- name: template: src/mytemplates/tt.j2 dest/etc/file.conf - name: template: src/mytemplates/tt.j2 dest/etc/file.conf groupwheel mode0644 - name: template: src/mytemplates/suzuka.j2 dest/etc/suzuka validatevisudo -cf %s6、fetch功能与copy类似但是是用于从远程主机中拷贝文件到管理主机不能拷贝目录常用参数:src: 从远程主机上获取的文件路径dest: 保存文件的目录flat: 是否校准源文件与获取文件是否一致默认false示例:- fetch: src/tmp/test dest/tmp/7、unarchive解压缩将压缩文件解压分发到不同节点上对zip压缩不友好尽量使用tar归档压缩常用参数:src: 源文件路径dest: 目标文件路径mode: 目标文件权限示例:- name: unarchive: src/myfiltes/jdk.tar.gz dest/opt8、wait_for等待某些操作完成以后再进行后续操作常用参数:connect_timeout: 在下一个任务执行之前等待连接的超时时间delay: 指在等待过程中轮询的时间间隔host: 等待的主机地址默认是127.0.0.1port: 等待的主机端口path: 文件路径只有当这个文件存在时才开始执行下一个任务state: 等待的状态值可以为started/stoped/absent/presenttimeout: 等待的超时时间默认300秒- name: 每隔10s检查一次等待8080端口正常监听才开始下一个任务直到超时 wait_for: port8080 statestarted delay10 - name: 等待文件创建 wait_for: path/tmp/tt9、when条件判断满足后再执行任务示例:- name: 判断变量tt是否定义 shell: echo Ive got {{ tt }} when: tt is defined10、pause暂停一定时间常用参数:minutes: 暂停多少分钟seconds: 暂停多少秒prompt: 打印一串信息提示用户操作示例:- name: 等待用户30s用于输入 pause: seconds30 promptENTER to continue CTRL-C a to quit11、register用于注册一个变量保存命令的结果常与when结合使用示例:- name: 执行pwd shell: /bin/pwd register: pwd_result - name: 当路径中包含home显示路径 debug: msg: {{ pwd_result }} when: pwd_result.stdout.find(home) ! -112、run_once指定该task只能在某一台机器上执行一次可以和delegate_to结合使用如果没有delegate_to那么这个task会在第一台机器上执行简单示例- name: 在web.example.org机器上刷新环境变量 shell: source /etc/profile run_once: true13、debug用于在调试中输出信息简单示例:- name: 显示调试信息 debug: msg: {{ pwd_result }}14、delegate_to任务委派功能指定在某一台机器上执行一个操作15、local_action本地操作功能在运行ansible命令机器上执行一个操作16、ignore_errors忽略错误的命令通常情况下当出现执行失败时ansible会停止运行有时候你会想要继续执行下去就需要添加这个简单示例:- name: 删除临时目录 shell: rm /tmp/data ignore_errors: yes17、user用户的管理18、group用户组的管理常用参数:name: 指定组名称gid: 指定GIDstate: 动作参数present: 增加absent: 删除19、yum软件包管理常用参数:name: 指定需要管理的软件包名state: 参数非常灵活可以包含的值及含义如下present: 确保软件包已经安装了installed: 安装latest: 安装最新的软件包removed/absent: 删除对应的软件包disable_gpg_check: 用于禁用对rpm包公钥验证默认值no表示不禁用验证yes表示禁用验证示例:- name: 安装httpd服务 yum: namehttpd statelatest - name: 删除旧版gcc yum: name {{ item }} stateremoved with_items: ###老版本的循环语句 - gcc - httpd - php ###### - hosts: all tasks: - name: 安装Apache yum: name: httpd state: present20、cron定时任务功能相当于crontab常用参数:name: 任务名称minute: 分 hour: 时day: 天month: 月weekday: 周job: 指定要执行的命令或者脚本state: 当设置为absent代表删除任务示例:- name: 新增一个定时查看路径任务 cron: namecheck minute5 jobpwd