首页
留言板
推荐
Allen知识库
Search
1
VMware vSphere系列教程-部署DC/DHCP/DNS(五)
21 阅读
2
最强链路监控系统推荐Pinpoint
21 阅读
3
PC新时代开启! DDR5内存标准正式发布
19 阅读
4
Ansible系列教程-常用模块(二)
13 阅读
5
将物理机迁移到VMware虚拟机(P2V)
13 阅读
VMware
vCloud
Horizon
vSphere
NSX
运维相关
Docker
Network
Zabbix
Ansible
Python
Microsoft
Mysql
Linux
Windows Server
登录
/
注册
Search
标签搜索
ansible
docker
zabbix
chatgpt
windows模板
linux模板
模板
k3
lede
openwrt
docker网络配置
清理微信好友
python清理微信好友
grafana
监控交换机
实施教程
ansible安装
ubuntu
acrh17路由固件
访问宽带猫
Allen
累计撰写
134
篇文章
累计收到
0
条评论
首页
栏目
VMware
vCloud
Horizon
vSphere
NSX
运维相关
Docker
Network
Zabbix
Ansible
Python
Microsoft
Mysql
Linux
Windows Server
页面
留言板
推荐
Allen知识库
搜索到
3
篇与
的结果
2020-04-26
Ansible系列教程-playbook详解(三)
一、Playbooks 简介Playbooks 与 adhoc 相比,是一种完全不同的运用 ansible 的方式,是非常之强大的.简单来说,playbooks 是一种简单的配置管理系统与多机器部署系统的基础.与现有的其他系统有不同之处,且非常适合于复杂应用的部署.Playbooks 可用于声明配置,更强大的地方在于,在 playbooks 中可以编排有序的执行过程,甚至于做到在多组机器间,来回有序的执行特别指定的步骤.并且可以同步或异步的发起任务.我们使用 adhoc 时,主要是使用 /usr/bin/ansible 程序执行任务.而使用 playbooks 时,更多是将之放入源码控制之中,用之推送你的配置或是用于确认你的远程系统的配置是否符合配置规范.在如右的连接中: ansible-examples repository ,有一些整套的playbooks,它们阐明了上述的这些技巧.我们建议你在另一个标签页中打开它看看,配合本章节一起看.二、YAML 语法YAML特性对于 Ansible, 每一个 YAML 文件都是从一个列表开始. 列表中的每一项都是一个键值对, 通常它们被称为一个 “哈希” 或 “字典”. 所以, 我们需要知道如何在 YAML 中编写列表和字典. YAML 还有一个小的怪癖. 所有的 YAML 文件(无论和 Ansible 有没有关系)开始行都应该是 ---. 这是 YAML 格式的一部分, 表明一个文件的开始. YAML的语法和其他高阶语言类似并且可以简单表达清单、散列表、标量等数据结构。(列表用横杆表示,键值对用冒号分割,键值对里又可以嵌套另外的键值对) YAML文件扩展名通常为.yaml或者.yml。 一定要对齐,只能使用空格 列表中的所有成员都开始于相同的缩进级别, 并且使用一个 "- " 作为开头(一个横杠和一个空格): --- # 一个美味水果的列表 - Apple - Orange - Strawberry - Mango一个字典是由一个简单的 键: 值 的形式组成(这个冒号后面必须是一个空格):--- # 一位职工的记录 name: Example Developer job: Developer skill: Elite让我们把目前所学到的 YAML 例子组合在一起. 这些在 Ansible 中什么也干不了, 但这些格式将会给你感觉:--- # 一位职工记录 name: Example Developer job: Developer skill: Elite employed: True foods: - Apple - Orange - Strawberry - Mango languages: ruby: Elite python: Elite dotnet: Lame这就是你开始编写 Ansible playbooks 所需要知道的所有 YAML 语法三 、核心组件核心组件tasks:任务 variables:变量 templates:模板 handlers:处理器 roles:角色 四、playbook基础1. 主机与用户你可以为 playbook 中的每一个 play,个别地选择操作的目标机器是哪些,以哪个用户身份去完成要执行的步骤(called tasks).hosts 行的内容是一个或多个组或主机的 patterns,以逗号为分隔符。 remote_user 就是账户名:--- - hosts: webservers remote_user: root参数 remote_user 以前写做 user,在 Ansible 1.4 以后才改为 remote_user.主要为了不跟 user 模块混淆(user 模块用于在远程系统上创建用户).再者,在每一个 task 中,可以定义自己的远程用户:--- - hosts: webservers remote_user: root tasks: - name: test connection ping: remote_user: yournametask 中的 remote_user 参数在 1.4 版本以后添加.也支持从 sudo 执行命令:--- - hosts: webservers remote_user: yourname sudo: yes同样的,你可以仅在一个 task 中,使用 sudo 执行命令,而不是在整个 play 中使用 sudo: --- - hosts: webservers remote_user: yourname tasks: - service: name=nginx state=started sudo: yes你也可以登陆后,sudo 到不同的用户身份,而不是使用 root:--- - hosts: webservers remote_user: yourname sudo: yes sudo_user: postgres如果你需要在使用 sudo 时指定密码,可在运行 ansible-playbook 命令时加上选项 --ask-sudo-pass (-K). 如果使用 sudo 时,playbook 疑似被挂起,可能是在 sudo prompt 处被卡住,这时可执行 Control-C 杀死卡住的任务,再重新运行一次.2. 第一个示例打开/root/first.yml文件- hosts: all remote_user: root vars: httpd_port=80 tasks: - name: install httpd yum: name=httpd state=present - name: install php yum: name=php state=present - name: start httpd service: name=httpd state=started enabled=truehosts 定义单个主机或组,vars定义变量,remote_user定义执行命令的远程用户,tasks定义执行哪些命令,handlers定义调用哪些处理器 vars(变量): 变量命名: 字母数字下划线组成,只能以字母开头 变量种类: facts(内置变量) 由远程主机发回的主机属性信息,这些信息被保存在ansible变量当中 例如:ansible 172.16.100.8 -m setup 来获取远程主机上的属性信息,这些属性信息保存在facts中 通过命令行传递 通过命令行传递:ansible-playbook test.yml --extra-vars “host=www user=tom“(如果剧本中已有此处定义的变量则会被覆盖) 通过roles传递 主机变量 在/etc/ansible/hosts中定义 [web1] 172.16.100.9 name=haha 组变量 [group_name:vars] foo=bar hosts : /etc/abible/hosts 中指定的远程主机,并用指定的属性进行连接 ansible_ssh_port 连接远程主机使用的端口 ansible_ssh_user 连接远程主机使用的用户 ansible_ssh_pass 连接远程主机使用的密码#cat /etc/ansible/hosts[web1] web1.hostname ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=123 web2.hostname
2020年04月26日
5 阅读
0 评论
0 点赞
2020-04-13
Ansible系列教程-常用模块(二)
一、模块介绍#ansible-doc -l # 列出 Ansible 支持的模块 #ansible-doc ping # 查看该模块帮助信息二、 远程命令模块(command / script / shell)2.1 commandcommand 作为 Ansible 的默认模块,可以运行远程权限范围所有的 shell 命令,不支持管道符。 执行命令:ansible Client -m command -a "free -m" 返回内存信息2.2 scriptscript 的功能是在远程主机执行主控端存储的 shell 脚本文件,相当于 scp + shell 组合 远程执行本地脚本 #ansible Client -m script -a "/home/1.sh"我在脚本里写了date,命令。2.3 shellshell模块基本和command相同,但是shell支持管道符 #ansible Client -m shell -a "/home/1.sh"2.4 copy模块# ansible Client -m copy -a "src=/home/1.sh dest=/tmp/ owner=root group=root mode=0755"进入到node1到tmp目录,查看文件是否存在。2.5 stat模块获取远程文件状态信息,atime/ctime/mtime/md5/uid/gid 等信息 #ansible Client -m stat -a "path=/etc/selinux/config"2.6 yum软件包管理#ansible Client -m yum -a "name=curl state=latest"2.7 远程主机 crontab 配置#ansible Client -m cron -a "name='check dirs' hour='5,2' job='ls -alh > /dev/null'"2.8 mount#ansible Client -m mount -a "name=/mnt/data src=/dev/sd0 fstype=ext4 opts=ro state=present"2.9 service#ansible Client -m service -a "name=nginx state=stoped" #ansible Client -m service -a "name=nginx state=restarted" #ansible Client -m service -a "name=nginx state=reloaded"2.10 user#ansible Client -m user -a "name=allen comment='user allen'" #shell > ansible Client -m user -a "name=allen state=absent remove=yes"
2020年04月13日
13 阅读
0 评论
0 点赞
2019-12-11
Ansible系列教程-环境部署(一)
一、概述Python 阵营的组态管理工具!个人对 Python 熟悉度大于 Ruby。3 不用帮每台机器 (instance) 预载 agent 4,只要有 SSH 和 Python 就可以闯天下!系统环境: CentOS 7.8 MINIip信息:ansible-node1:172.16.100.9 ansible-node2:172.16.100.10 ansible-control:172.16.100.11在目前 4 大主流的组态管理工具 (Puppet, SaltStack, Chef, Ansible) 中, Ansible 是最容易上手,且马上就可以用的工具。Ansible 是怎么运作的?在 Ansible 的世界里,我们会通过 inventory 档案来定义有哪些 Managed node (被控端),并借由 SSH 和 Python 进行沟通。换句话说,当 Control Machine (主控端) 可以用 SSH 连上 Managed node,且被连上的机器里有预载 Python 时,Ansible 就可以运作了!Control Machine 指的是我们主要会在上面操作 Ansible 的机器,冻仁喜欢用主控端来形容它。它可以是我们平时用的电脑、手机 1 或机房里的某一台机器,也可以把它想成是一般 Lab 练习里的 Workstation。Managed node 则是被 Ansible 操纵的机器,冻仁喜欢用被控端来形容它。在很多的 Lab 练习里会用 Server 来称呼它。在一般的情况下,我们只需在 Control Machine 里安装 Ansible 即可,因为 GNU/Linux 和 macOS 的 Managed node 都早已预载了 Python 2.5 以上的版本,且开通了 SSH 连线的条件。二、开始安装管理主机新增 epel-release 第三方套件来源。 # yum install -y epel-release 安装 Ansible。 # yum install -y ansible 三、配置Ansible管理主机安装好 Ansible 后,我们可以在 /etc/ansible/ 的目录底下找到 Ansible 的配置文件通常我们较偏爱把 ansible.cfg 和 hosts 这两个档案与其它的 Playbooks 放在同个专案目录底下,然后通过版本控制系统 (例如 Git) 把它们一起储存起来,以实现 Ansible 的 Infrastructure as Code!3.1 配置SSH秘钥认证#ssh-keygen -t rsa #ssh-copy-id root@172.16.100.9 #ssh-copy-id root@172.16.100.103.2 添加被管理主机打开/etc/ansible/hosts文件,在底部添加如下:[Client] 172.16.100.9 172.16.100.103.4 测试运行#ansible Client -m ping 命令,测试组内所有主机。3.5 inventory 是什么?inventory 就单字本身有详细目录、清单和列表的意思。在这里我们可以把它当成是一份主机列表,我们可通过它对定义每个 Managed Node 的代号、IP 位址、连线相关资讯和群组。1.若有对管理端操作的需求,建议于/etc/ansible/hosts 补上 local 的设定。# For root user. $ /bin/echo -e "[local]\nlocalhost ansible_connection=local" >> /etc/ansible/hosts # For sudo user. $ sudo su -c '/bin/echo -e "[local]\nlocalhost ansible_connection=local" >> /etc/ansible/hosts'3.6 Hello World当已上的设置都完成了,您可以试著在终端机里用 Ansible 呼叫本机印出 Hello World。# ansible localhost -m command -a 'echo Hello World.'欢迎来到 Ansible 的世界!:D
2019年12月11日
1 阅读
0 评论
0 点赞