当前位置: 首页 > Linux

用于Linux批处理管理的Ansible

时间:2023-04-06 04:37:21 Linux

rsync脚本编写vimrsync_server.yaml#创建脚本-hosts:172.1.1.1tasks:-name:01-installrsyncyum:name=rsyncstate=installed-name:02-pushconffilecopy:src=/etc/ansible/server_file/rsync_server/rsyncd.confdest=/etc/#如果这里修改了文件,需要重启时就会出现问题-name:03-createuseruser:name=rsynccreate_home=noshell=/sbin/nologinshell:useraddrsync-M-s/sbin/nologin-name:04-createbackupdirectoryfile:path/backupstate=directoryowner=rsyncgroup=rsync-name:05-createpassword目录copy:content=rsync_backup:demo123dest=/etc/passwordmode=600-name:06-启动服务service:name=rsyncdstate=startedenabled=yes-hosts:172.1.1.2#如果有多个客户端,如何启动任务:-name:01-安装的软件yum:name=rsyncstate=installed-name:02-createpasswordfilecopy:content=demo123dest=/etc/rsync.passwordmode=600-name:03测试数据备份file:dest=/tmp/test.txtstate=touch-name:04启动测试shell:rsync-avz/tmp/test.txtrsync_backup@172.1.1.1::backup--password-file=/etc/rsync.passwordansible-playbook--syntax-checkrsync_server.yaml脚本中的常见错误1.脚本的语法规范是否符合(空格,冒号,破折号)2.脚本中的模块是否使用正确3.中的一个名字脚本只能在下面标注如何写一个任务信息来配置主机列表?PS:配置文件中可以管理少量服务器。如果服务器数量增加,管理将变得极其复杂和繁琐。主机列表配置方式一:1.组管理[web]172.1.1.1172.1.1.2[data]172.1.1.3172.1.1.4ansibleweb-a"hostname"#查看一组主机2.主机名符号配置[web]172.1.1.[7:9]3.支持非标准端口配置[web]web01:1122该方法中目标终端的端口可以更改,无需指定默认端口,批量管理服务器配置目标主机的服务自己端口,可以连接4.支持主机的特殊变量[web]172.1.1.1ansible_ssh_host=123.1.1.1ansible_ssh_port=52113ansible_ssh_user=rootansible_ssh_pass=123也可以在不分发public的情况下操作主机key5.宿主机内嵌配置[rsync:children]rsync_clientrsync_server[rsync_server]121.1.1.1[rsync_client]123.1.1.1[web:vars]#内嵌变量a=111脚本扩展功能1.在脚本中设置变量信息vars:backupdir:/backuppassfile:/rsync.password{{backupdir}}#在需要的地方调用变量a,直接在脚本文件中写b,在命令行中指定ansible-playbook--extra-vars=demo=datac,在hostlist文件中写三种变量的调用方式分别是都用过,三种方法的优先级??#配置不同的变量,执行脚本,查看一下,哪个item先出现在client中,可以确定优先级linevariable>scriptvariable>hostlistvariable如何设置全局变量?roles脚本集成2.在脚本中设置注册信息执行脚本中需要模块显示输出命令结果信息:register,debug3.在脚本中设置判断信息指定判断条件(ansible_hostname=="nfs")在setup模块中显示被管理主机的详细信息4.在脚本中设置循环信息(百度)5.在脚本中设置错误标签模块:ignore_errors:yes6.在脚本中设置标签信息-只运行tag标记的行,停止运行其他已经运行的模块:tags:dir[不要使用数字]7、在脚本notify:restartrsynchandler中设置触发信息(trigger):-name:restartrsync八、在脚本中集成脚本,编写NFS脚本1、创建目录mkdir-ransible/nfs-file/{nfs-server,nfs-client}treenfs-file2、编写电视剧本信息-hosts:nfstasks:-name:01-installnfsserveryum:name;['nfs-utils','rpcbind']state:installed-hosts:nfs_servervars:data_dir:/datatasks:gather_facts:no#不要让ansible收集信息-name:01-copyconffilecopy:src=/etc/ansible/ansible-playbook/nfs-file/nfs-server/exports/dest=/etcnotify:restartnfsserver-name:02-createdirectoryfile:path=/{{data_dir}}state=directoryowner=nfsnobodygroup=nfsnobody-name:03-启动服务#service:name=nfsstate=startedenabled=yes#service:name=rpcbindstate=startedenabled=yesservices:name={{item}}state=startedenabled=yeswith_items:-rpcbind-nfs-hosts:nfs_clienttasks:-name:01-mountedmount:src=172.16。1.31:/{{data_dir}}path=/mntfstype=nfsstate=mounted-name:02-检查挂载外壳:df-h|grep/dataregister:mount_info-name:displaymountinfodebug:msg={{mount_info.stdout_lines}}handlers:-name:restartnfsserverservice:name=nfsstate=restarted3.脚本测试4、执行脚本并集成多个脚本方法一:include_tasks:f1.yml-host:allremote_user:roottasks:-include_tasks:f1.yml-include_tasks:f2.yml方法二:include:f1.yml-include:f1.yml-include:f2.yml方法三:-import_playbook脚本编写问题ansiblerole---规范以下问题1.目录不够规范--混乱2.写好的任务被复用3.服务端配置文件改了,client端参数信息也是自动化的4.摘要脚本中不显示宿主角色信息5.一个脚本内容信息过多,不易阅读。如果将其拆分并规范目录结构cd/etc/ansible/rolesmkdir{rsync,nfs}----创建对应的角色目录mkdir{nfs,rsync,web,sersync}/{vars,tasks,templates,handlers,files}----在role目录下创建子目录,ansible指定的目录files:---保存需要分发handlers的文件目录:----保存trigger配置文件信息tasks:----savetheactioninformationfiletemplates:----保存要分发的模板文件,模板文件中可以设置变量信息vars:------Savevariableinformationfiles在roles目录下创建相关文件写入一个文件流程图——自己给百度写一个主脚本文件cd/etc/ansible/rolesvimsite.yaml脚本有错误检查思路1.找到脚本中的问题关键点2.将脚本中的操作转换成模块进行操作#命令行操作3.将模块操作转换成linux命令操作#使用命令linux中断执行本地命令并执行远程终端执行