ansible技术栈 一

  1. #### Role角色

复习总结 Role角色

下载安装包
  1. yum install -y tree #安装查看目录包

ansible一键创建role角色目录
  1. ansible-galaxy init ~/ansible/roles/名称

ansible-Role角色技术栈 - 图1

ansible-role角色模板官方

ansible-Role角色技术栈 - 图2

下载role角色模板方法

ansible-Role角色技术栈 - 图3

ansible常用指令总结
  1. 1ansible-playbook --syntax-check play.yml #检测yml文件语法
  2. 2ansible-playbook +文件 #执行文件语法
  3. 3ansible --version #查看版本
  4. 4ansible --help #看帮助
  5. 5rpm -qc ansible #查看配置文件
  6. 6ansible 组名 --list-hosts #查看组内主机列表:
  7. 7gather_facts: false #是否执行setup模块,搜集对方机器的信息
  8. 8.ansible-doc -s fetch #命令,查看一下fetch模块的用法
  9. 9.ansible-playbook --check test.yml #模拟运行不会执行
  10. 10.

ansible常用模块详解
  1. 1.远程复制备份模块:copy
  2. 模块参数详解:
  3. src=:指定源文件路径
  4. dest=:目标地址(拷贝到哪里)
  5. owner:指定属主
  6. group:指定属组
  7. mode:指定权限,可以以数字指定比如0644
  8. backup:在覆盖之前将原文件备份,备份文件包含时间信息。有两个选项:yes|no
  9. 2.软件包管理 yum模块
  10. ansible 组名 -m yum -a "name=httpd state=latest" -o
  11. state= #状态是什么,干什么
  12. state=absent 用于remove安装包
  13. state=latest 表示最新的
  14. state=removed 表示卸载
  15. 3.服务管理service模块
  16. 1ansible 组名 -m service -a "name=httpd state=started" #启动
  17. 2ansible 组名 -m service -a "name=httpd state=stopped" #停止
  18. 3ansible 组名 -m service -a "name=httpd state=restarted" #重启
  19. 4ansible 组名 -m service -a "name=httpd state=started enabled=yes" #开机启动
  20. 5ansible 组名 -m service -a "name=httpd state=started enabled=no" #开机关闭
  21. 4.文件模块file
  22. owner:修改属主
  23. group:修改属组
  24. mode:修改权限
  25. path=:要修改文件的路径
  26. recurse:递归的设置文件的属性,只对目录有效 yes:表示使用递归设置
  27. state:
  28. touch:创建一个新的空文件
  29. directory:创建一个新的目录,当目录存在时不会进行修改
  30. 循环:迭代,需要重复执行的任务;
  31. 对迭代项的引用,固定变量名为”item”,使用with_item属性给定要迭代的元素;
  32. handlers:由特定条件触发的Tasks
  33. handlers:处理器
  34. notify:触发器
  35. 自定义vars_files变量
  36. 变量调用语法:
  37. {{ var_name }}

查看Role角色 目录结构
  1. tree + 目录名称 # 可以查看你的目录下面role角色用的哪个yml文件

ansible-Role角色技术栈 - 图4

Role角色目录的创建

roles为自带目录,如果不存在可以创建
步骤1;先创建目录 和目录下面的文件

  1. [root roles]# mkdir -p nginx/{files,handlers,tasks,templates,vars}
  2. #创建role角色的外部目录
  3. [root@web1 roles]# touch site.yml
  4. #创建存放指定角色文件
  5. [root@web1 roles]# touch nginx/{handlers,tasks,vars}/main.yml
  6. #创建每一个目录下面的yml文件

Role角色目录及文件详解
  1. 目录顺序:
  2. role_name/ ---角色名称=目录
  3. files/:存储一些可以用copy调用的静态文件。
  4. tasks/: 存储任务的目录,此目录中至少应该有一个名为main.yml的文件,用于定义各task;其它的文件需要由main.yml进行“包含”调用;
  5. handlers/:此目录中至少应该有一个名为main.yml的文件,用于定义各handler;其它的文件需要由(与notify:名字相同,方便notify通知执行下一条命令)通过main.yml进行“包含”调用;
  6. vars/:此目录中至少应该有一个名为main.yml的文件,用于定义各variable;其它的文件需要由main.yml进行“包含”调用;
  7. templates/:存储由template模块调用的模板文本; (也可以调用变量)
  8. site.yml:定义哪个主机应用哪个角色

自己理解目录详解

ansible-Role角色技术栈 - 图5

Ansible Playbook运维常用命令

  1. ansible-playbook // 查看帮助
  2. ansible-playbook a.yml --syntax-check //检查yaml文件的语法是否正确
  3. ansible-playbook a.yml --list-task //检查tasks任务
  4. ansible-playbook a.yml --list-hosts //检查生效的主机
  5. ansible-playbook a.yml --start-at-task='Copy Nginx.conf' //指定从某个task开始运行
  6. ansible-playbook --syntax-check -e "hosts=c7" xx.yml -s -k // 语法检查

排除某些主机

  1. ansible-playbook -i hostslist ***.yml --limit 192.168.0.1 // 排除单个主机
  2. ansible-playbook -i hostslist ***.yml --limit @failed.txt // 排除多个主机

启用并行进程数执行

  1. ansible-playbook update-stg.yml -f 10 -s -k // 启用10个并行进程数执行

启用换行编写

  1. ## 备份文件
  2. - name: "mkdir backup directory"
  3. hosts: "{{ hosts }}"
  4. tasks:
  5. - name: "mkdir backup dirctory"
  6. file: >
  7. path=/opt/backup/xxx state=directory
  8. mode=0755