setup

作用,用来查看用看内部的详细信息

ansible_all_ipv4_addresses # ipv4的所有地址
ansible_all_ipv6_addresses # ipv6的所有地址
ansible_date_time # 获取到控制节点时间
ansible_default_ipv4 # 默认的ipv4地址
ansible_distribution # 系统
ansible_distribution_major_version # 系统的大版本
ansible_distribution_version # 系统的版本号
ansible_domain #系统所在的域
ansible_env #系统的环境变量
ansible_hostname #系统的主机名
ansible_fqdn #系统的全名
ansible_machine #系统的架构
ansible_memory_mb #系统的内存信息
ansible_os_family # 系统的家族
ansible_pkg_mgr # 系统的包管理工具
ansible_processor_cores #系统的cpu的核数(每颗)
ansible_processor_count #系统cpu的颗数
ansible_processor_vcpus #系统cpu的总个数=cpu的颗数*CPU的核数
ansible_python # 系统上的python
ansible cache -m setup -a 'filter=*processor*' # 用来搜索

条件判断

作用:不同的系统

  • 不同的版本

  • 不同的环境

  • 不同的用户

标准:

- hosts: db
remote_user: root
tasks:
- name: createfile
copy: content="大弦嘈嘈如急雨" dest=/tmp/a.txt
when: a==""
- name: cratefile
copy: content="小弦切切如私语" dest=/tmp/a.txt
when: a==""

在执行时,需要传参进行判断

ansible-playbook -e 'a=="3""' p1.yml

Ubuntu 安装包的方式是apt-get

tags

标准:

- hosts: web
tasks:
- name: installnginx
yum: name=nginx
- name: copyfile
copy: src=/etc/nginx/nginx.conf dest=/etc/nginx/nginx.conf
tags: copyfile
- name: start
service: name=nginx state=started #使用tags作用是在多个任务中只选择一个执行,在执行的下面输入 tags=name

执行

ansible-playbook -t copyfile p7.yml
#使用 - t name 进行执行

循环 with_item

一次性创建多个

- hosts: web
tasks:
- name: crateuser
user: name={{item}}
with_items:
- alex20
- alex21
- alex22
- hosts: web
tasks:
- name: crateuser
user: name={{item}}
with_items:
- alex30
- alex31
- alex32
- name: crategroup
group: name={{item}}
with_items:
- wulaoshi20
- wulaoshi21
- wulaoshi22
#都可以用{{item}}为参数传递

嵌套循环

- hosts: web
tasks:
- name: crategroup
group: name={{item}}
with_items:
- wulaoshi30
- wulaoshi31
- wulaoshi32
- name: createuser
user: name={{item.name}} group={{item.group}}
with_items:
- {'name':alex40,'group':wulaoshi30}
- {'name':alex41,'group':wulaoshi31}
- {'name':alex42,'group':wulaoshi32} #通过进行字典的创建来完成嵌套

template:

copy和tamplate的区别

  • copy模块不替代参数

  • template模块替代参数

绝对路径

- hosts: web
tasks:
- name: installredis
yum: name=redis
- name: copyfile
template: src=/etc/redis.conf dest=/etc/redis.conf
#使用绝对路径写
- name: start
service: name=redis state=started
配置文件: bind {{ ansible_default_ipv4.address }}

相对路径

- hosts: web
tasks:
- name: installredis
yum: name=redis
- name: copyfile
template: src=redis.conf dest=/etc/redis.conf
- name: start
service: name=redis state=started
- hosts: web
tasks:
 - name: installredis
  yum: name=redis
 - name: copyfile
  template: src=redis.conf dest=/etc/redis.conf
 - name: start
   service: name=redis state=started

ps:写相对路径: 在当前目录下新建一个templates目录,然后把文件放在templates目录里面 将文件cp到templates

handlers

作用:修改配置文件,在触发时生效

- hosts: web
tasks:
- name: installredis
yum: name=redis
- name: copyfile
template: src=redis.conf dest=/etc/redis.conf
tags: copyfile
notify: restart
- name: start
service: name=redis state=started
handlers:
- name: restart
service: name=redis state=restarted
回顾 playbook

传参

条件判断 when

循环 with_items  item

嵌套循环  字典  通过点来取值

标签  tags  -t 来传递标签

模板  template 

handlers   不会执行, notify

roles

  • 目录清晰

  • 可以互相调用

使用:
在/root 下新建文件夹

mkdir roles

roles文件夹里面是要创建的每一个角色,每一个角色一个文件夹

mkdir web
mkdir acahe
mkdir db

每一个角色里面都有tasks(必须的),templates,files,handlers,vars目录

-pv mkdir {tasks(必须的),templates,files,handlers,vars}
递归创建文件夹

在每一个目录下,都要创建main.yml文件,通过import_tasks来调用,tasks下的main.yml

- import_tasks: copyfile.yml
- import_tasks: install.yml
- import_tasks: start.yml
- import_tasks: roles/db/tasks/createuser.yml

tasks目录下的任务

copyfile.yml

- name: copyfile
template: src=redis.conf.j2 dest=/etc/redis.conf
tags: copyfile
notify: restart

install.yml

- name: install
yum: name=redis
~

start.yml

- name: start
service: name=redis state=started

其中templates文件夹中的文件可以通过相对路径来调用

在 templates  文件夹下为相对路径template 录入文件

cp /etc/redis/redis.conf  /redis.conf.j2

将文件名改为jinjia2 格式

在这些步骤完成后,就差启动了 ,创建 roles 文件夹下同级目录 ,web.yml

- hosts: web
remote_user: root
roles:
- web
ansible-playbook --syntax-check web.yml
ansible-playbook -t copyfile web.yml

如何调用roles ?

进入roles 文件夹

假设roles 下的db 使用web 的文件夹

进入 db 文件夹下,

创建文件 createuser.yml

- name: createuser
user: name=alex888

由于是借助web 文件下的roles,所以到

在main.yml写入

- import_tasks: copyfile.yml
- import_tasks: install.yml
- import_tasks: start.yml
- import_tasks: roles/db/tasks/createuser.yml #这个借助要使用绝对路径

最后启动web.yml就好了

ansible 模块 roles的更多相关文章

  1. Ansible之roles模块--lnmp分布式部署

    Ansible之roles模块--lnmp分布式部署 目录 Ansible之roles模块--lnmp分布式部署 1. role模块的作用 2. roles的目录结构 3. roles内个目录含义解释 ...

  2. Ansible的roles标准化与Jenkins持续集成(三)

    Ansible的roles标准化与Jenkins持续集成(三) 链接:https://pan.baidu.com/s/1A3Iq3gGkGS27L_Gt37_I0g 提取码:ncy2 复制这段内容后打 ...

  3. Ansible:roles初始化系统

    简介 本文介绍ansible的roles,通过roles来实现系统的初始化,其相当于将ansible的playbook拆分.本文通过Jenkins,传参,调用playbook来初始化系统. Githu ...

  4. ansible模块

    ansible模块: 模块(Modules),类似于 "任务插件"("task plugins")或"库插件"("library ...

  5. ansible笔记(3):ansible模块的基本使用

    ansible笔记():ansible模块的基本使用 在前文的基础上,我们已经知道,当我们使用ansible完成实际任务时,需要依靠ansible的各个模块,比如,我们想要去ping某主机,则需要使用 ...

  6. 第4天:Ansible模块

    Ansible对远程服务器的实际操作实际是通过模块完成的,其工作原理如下: 1)将模块拷贝到远程服务器 2)执行模块定义的操做,完成对服务器的修改 3)在远程服务器中删除模块 需要说明的是,Ansib ...

  7. ansible模块command、shell、raw、script

    简介 环境: ansible端: ip:192.168.100.129 hostname:node1.lansgg.com client端: ip:192.168.100.131 hostname:v ...

  8. win10的pycharm中安装ansible模块过程

    前面的安装报错信息 ansible模块安装报错:Could not install packages due to an OSError: [Errno 2] No such file or dire ...

  9. ansible基础-roles

    一 简介 注:本文demo使用ansible2.7稳定版 在我看来,role是task文件.变量文件.handlers文件的集合体,这个集合体的显著特点是:可移植性和可重复执行性. 实践中,通常我们以 ...

随机推荐

  1. 好用的代码统计小工具SourceCounter(下载)

    SourceCounter下载链接 https://pan.baidu.com/s/12Cg51L0hRn5w-m1NQJ-Xlg 提取码:i1cd 很多时候我们需要统计自己所写的代码的数量.举个栗子 ...

  2. 机器学习之感知器和线性回归、逻辑回归以及SVM的相互对比

    线性回归是回归模型 感知器.逻辑回归以及SVM是分类模型 线性回归:f(x)=wx+b 感知器:f(x)=sign(wx+b)其中sign是个符号函数,若wx+b>=0取+1,若wx+b< ...

  3. [NewLife.XCode]分表分库(百亿级大数据存储)

    NewLife.XCode是一个有15年历史的开源数据中间件,支持netcore/net45/net40,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量 ...

  4. 洛谷P4015 运输问题 网络流24题

    看了下SPFA题解,一个一个太麻烦了,另一个写的很不清楚,而且注释都变成了"????"不知道怎么过的,于是自己来一发SPFA算法. Part 1.题意 M 个仓库,卖给 N 个商店 ...

  5. Unity开发实战探讨-资源的加载释放最佳策略简要心得

    Unity开发实战探讨-资源的加载释放最佳策略简要心得 看过我另外一篇关于Unity资源释放随笔<Unity开发实战探讨-资源的加载释放最佳策略>如果觉得略微复杂,那么下面是一些比较简要的 ...

  6. 【Java语言特性学习之三】Java4种对象引用

    为了更灵活的控制对象的生命周期,在JDK1.2之后,引用被划分为(引用的级别和强度由高到低)强引用.软引用.弱引用.虚引用四种类型,每种类型有不同的生命周期,它们不同的地方就在于垃圾回收器对待它们会使 ...

  7. mybatis报错:Invalid bound statement (not found)

    mybatis报错:Invalid bound statement (not found)的原因很多,但是正如报错提示一样,找不到xml中的sql语句,报错的情况分为三种: 第一种:语法错误 Java ...

  8. windows下mysql安装和配置

    历史版本下载地址安装,解压添加环境变量使用cmd中操作mysql进程修改mysql的配置附录:设置mysql随开机自启 TOC 历史版本下载地址 windows的mysql历史版本,推荐使用5.6版本 ...

  9. springboot项目POM文件第一行报错 Unknown Error

    改成 war 不错了,但是打包麻烦 pom 文件报错 UnKnown Error第一次碰到这个问题,花了几个小时才解决,除了UnKnown 没有任何提示.网上搜的大部分情况都不是我遇到的. 还是没有解 ...

  10. C# 刷遍 Leetcode 面试题系列连载(3): No.728 - 自除数

    前文传送门: C#刷遍Leetcode面试题系列连载(1) - 入门与工具简介 C#刷遍Leetcode面试题系列连载(2): No.38 - 报数 系列教程索引 传送门:https://enjoy2 ...