Ansible
彭淦淦
破烂猴
展开
-
ansible 入门教程12 loops(循环)
标准的循环:– name: add several usersuser :name={{ item }} state=presetn groups=wheelwith_items:– testuser1– testuser2变形版– name: add several usersuser: name={{ item.name }} state=present groups={{ item.groups }}with_items:– { name: ‘testuser1′, groups:原创 2021-03-16 20:57:50 · 175 阅读 · 0 评论 -
ansible 入门教程11 condition
有时候我们可能不想在某一台远程主机上安装某一个特定版本的软件包,因为这个主机的系统可能和其他的系统不一样有时候我们系统执行一些clean up操作当我们发现系统满了的情况好了,我们看一下例子:关闭操作系统为debian的远程主机tasks:– name: “shutdown Debian flavoer system”command: /sbin/shutdown -t nowwhen :ansible_os_family==”Debian”:关闭Centos6 或者Centos7的远程主机原创 2021-03-15 19:41:10 · 220 阅读 · 0 评论 -
ansible 入门教程10 jinjia2 filter
tasks:– shell:/usr/bin/fooregister: resultignore_errors: True– debug: msg “it failed”when: result|failed– debug: msg=”it changed”when: result|changed– debug: msg=”it succeeded”when: result|sucess– debug: msg=”it was skipped”when: result|skipped原创 2021-03-15 19:40:21 · 190 阅读 · 0 评论 -
ansible 入门教程09 变量文件分离
我们可以将play中的变量分离出来单独存放在别的文件中—– hosts: allremote_user: rootvars:favcolor: bluevars_files:– /vars/external_vars.ymltasks:– name: this is just a placeholdercommand: /bin/echo foo然后,我们在/vars/external_vars.yml中:—in the above example, this would be v原创 2021-03-15 19:39:37 · 234 阅读 · 0 评论 -
ansible 入门教程08 变量注册
我们可以把结果注册到我们的定义的标量中,然后在play执行过程中去使用这些变量例如:– hosts: web_serverstasks:– shell: /usr/bin/foo register: foo_result ignore_errors: True – shell: /usr/bin/bar when: foo_result.rc == 5然后系统内置了一些变量来获取其他机器的信息,如:常用的有:hostvars,group_names,groupshostvars 就是其他机器的原创 2021-03-15 19:39:02 · 247 阅读 · 0 评论 -
ansible 入门教程07 自带的系统变量facts
除了我们自己定义的变量外,系统的一些变量如:hostname,ip等,我们是不需要定义的,可以通过facts直接获取我们可以通过ansible localhost -m setup查看本机有哪些预设变量可以让我们使用…“sda”: {“holders”: [],“host”: “SCSI storage controller: LSI Logic / Symbios Logic 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (rev 01)”,“mo原创 2021-03-15 19:38:25 · 548 阅读 · 0 评论 -
ansible 入门教程06 变量
变量的命名要注意,不要使用- ,而推荐使用_变量可以通过group来定义,也就是定义一些变量给整个组使用,例如:group_vars/├── all└── dbservers对应的就是我们hosts中定义的组当然,也可以在playbook中直接定义– hosts: webserversvars:http_port: 80当然,我们定义的主要目的还是用使用这些变量例如,我们在例子中的db,模板中cat roles/db/templates/my.cnf.j2[mysqld]data原创 2021-03-15 19:37:47 · 126 阅读 · 0 评论 -
ansible 入门教程04 include
按照官方文档,include就是把一些小的,可以多个play使用的小功能,分别放到单独的文件中,使用的时候引用即可,类似我们现在制作网站使用的头部,底部引用,修改的时候修改一个地方,不需要挨个页面修改例如:我们先创建一个文件叫:tasks/foo.yml内容如下:– name: placeholder foocommand: /bin/foo– name: placeholder barcommand: /bin/bar其实就是两个task,然后,当我们想要用两个task的时候,我们只需要原创 2021-03-15 19:37:07 · 354 阅读 · 0 评论 -
ansible 入门教程03 notice
当一个文件修改了的时候,我们可能需要重启相应的服务例如:-name: template configuration filetemplate: src=template.j2 dest=/etc/foo.confnotify:– restart memcached– restart apachenotify 中的两个,我们叫做handlershadlers 是一系列的任务,和普通的任务一样,通过name引用,只不过如果没有Notify,这些任务是不会执行的,而且这个只会运行一次在一个play原创 2021-03-15 19:36:15 · 153 阅读 · 0 评论 -
ansible 入门教程02 Tasks list
每一个play都是一系列的task(任务),任务执行是按照顺序一次一个的执行的,每个任务的目的是调用一个模块,通过特定的参数,变量模块是可以重复执行的,模块执行过程中只会变更需要变更的部分来达到目的状态,所以你可以重复执行某个模块command 和shell模块会重复执行,如果是chmod这样的命令也是没有关系的每一个task 都需要有一个name,这个name会在palybook执行的时候输出,如果没有提供name,输出的时候就会输出action的内容下边是一个例子task:– name: m原创 2021-03-15 19:35:28 · 284 阅读 · 0 评论 -
ansible 入门教程01 hosts and users
playbook基本要素:hosts and users每一个 play ,都必须要选择要哪些组才是我们的目标,并且需要指定是哪个用户登录远程服务器完成play中的每个一个taskhosts 是一个活多个group组的名字或者正则表达式,通过冒号“:”区分user 就是要执行这些task使用的用户—-hosts:webserversremote_user:root另外的一个例子:—-hosts:webserversremote_user:roottasks:-name:test c原创 2021-03-15 19:34:33 · 245 阅读 · 0 评论 -
ansible模块练习
8.1 问题本案例要求:使用copy模块同步 my.cnf 配置文件使用 lineinfile 模块 修改 binlog 格式使用 replace 模块修改 binlog 格式8.2 步骤实现此案例需要按照如下步骤进行。步骤一:综合练习1)使用copy模块同步my.cnf配置文件[root@ansible ansible]# ansible db -m copy -a ‘src=/root/my.cnf dest=/etc/my.cnf’2)使用 lineinfile 模块 修改 bi原创 2020-05-23 09:15:05 · 374 阅读 · 0 评论 -
练习模块
7.1 问题本案例要求:批量修改配置文件批量修改所有机器的 dns 配置 /etc/resolv.conf批量同步所有机器的 yum 配置文件给所有 db 主机开启 binlog 日志log_bin = mysql-binbinlog-format = mixed7.2 步骤实现此案例需要按照如下步骤进行。步骤一:练习模块1)批量修改配置文件批量修改所有机器的 dns 配置 /etc/resolv.conf[root@ansible .ssh]# ansible all -m sh原创 2020-05-23 09:14:29 · 267 阅读 · 0 评论 -
练习模块
6.1 问题本案例要求:添加用户给所有 web 主机添加用户 wk要求 nb 用户与 wk 用户不能出现在同一台主机上设置 wk 用户的 密码是 4566.2 步骤实现此案例需要按照如下步骤进行。步骤一:添加用户对于太复杂的命令,可以写个脚本,然后用script模块执行用脚本写,script模块执行[root@ansible .ssh]# vim a.sh#!/bin/bashid nbif [ $? != 0 ];then useradd wk echo 1原创 2020-05-22 09:20:26 · 147 阅读 · 0 评论 -
创建用户
5.1 问题本案例要求:添加用户给 web1 db2 添加用户 nb设置 nb 的密码为 1235.2 步骤实现此案例需要按照如下步骤进行。步骤一:添加用户在web1和 db2主机上创建nb用户,修改nb的密码为123(以web1为例子)[root@ansible .ssh]# ansible web1 -m shell -a 'useradd nb'[root@ansible .ssh]# ansible web1 -m shell -a 'echo 123 | passwd --s原创 2020-05-22 09:19:56 · 187 阅读 · 0 评论 -
练习理解批量执行
4.1 问题本案例要求:shell执行以下命令查看结果,并说明原因ansible web -m shell -a "echo ${HOSTNAME}"ansible web -m shell -a 'echo ${HOSTNAME}'testfile 文件在哪里ansible cache -m shell -a 'cd /tmp'ansible cache -m shell -a 'touch testfile'4.2 步骤实现此案例需要按照如下步骤进行。1)shellansibl原创 2020-05-22 09:18:53 · 163 阅读 · 0 评论 -
主机定义与分组: 给所有主机部署 key 在 inventory 文件中指定 key 的位置 配置主机分组,自定义文件,在重新定义一个新的 ansible.cfg 在自
3.1 问题本案例要求:给所有主机部署 key在 inventory 文件中指定 key 的位置配置主机分组,自定义文件,在重新定义一个新的 ansible.cfg在自定义的文件夹中完成之前的配置3.2 步骤实现此案例需要按照如下步骤进行。步骤一:给所有主机部署key,案例2已经做过,这里不再重复步骤二:在 inventory 文件中指定 key 的位置[all:vars]ansible_ssh_private_key_file="/root/.ssh/key"[root@ansi原创 2020-05-22 09:18:27 · 267 阅读 · 0 评论 -
批量部署证书文件: 创建一对密钥 给所有主机部署密钥
2.1 问题本案例要求:创建一对密钥cd /root/.sshssh-keygen -t rsa -b 2048 -N '' -f key给所有主机部署密钥ssh-copy-id -i key.pub 主机名称2.2 步骤实现此案例需要按照如下步骤进行。步骤一:批量部署证书文件,给所有主机部署密钥1)创建密钥 [root@ansible myansible]# cd /root/.ssh/[root@ansible .ssh]# vim /etc/ansible/hosts[we原创 2020-05-22 09:17:49 · 246 阅读 · 0 评论 -
环境准备: 启动6台虚拟机 2cpu,1.5G 以上内存 10G 以上硬盘,1块网卡
1.1 问题本案例要求准备ansible的基础环境:启动6台虚拟机2cpu,1.5G 以上内存10G 以上硬盘,1块网卡1.2 方案此方案需要准备六台主机,1台管理主机,5台托管主机,以实现批量程序部署,批量运行命令等功能,具体要求如表-1所示:表-11.3 步骤实现此案例需要按照如下步骤进行。步骤一:基础环境准备1)启动6台虚拟机,由于已经讲过怎么创建,这里不再在案例里体现2)真机配置yum仓库[student@room9pc01~]$ mkdir /var/ftp/ansi原创 2020-05-22 09:15:57 · 700 阅读 · 0 评论