前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >说下ansible吧(基础篇)

说下ansible吧(基础篇)

作者头像
禹都一只猫olei
发布2018-12-26 16:59:52
6170
发布2018-12-26 16:59:52
举报

前言

  1. 之前一直用的都是saltstack,C/S架构的,需要master端以及minion端,一台或者多台master端,批量控制minion端
  2. ansible呢,没那么复杂,基于ssh协议来的批量部署工具,不需要master与minion端,python编写的
  3. 基于ubuntu 16.04来说明的

安装

  • 方法一:源安装
代码语言:javascript
复制
apt-add-repository ppa:ansible/ansible
apt-get update
apt-get install ansible
  • 方法二:pip安装
代码语言:javascript
复制
pip install ansible
  • 方法三:源码安装(不作说明,自行百度,建议源或者pip)

基础介绍

准备

  • 书写hosts文件
代码语言:javascript
复制
vim /etc/ansible/hosts
----------------
[test]
xxx.xx.xx
  • 无密码连接远程服务器设置
代码语言:javascript
复制
ssh-copy-id -i ~/.ssh/id_rsa.pub xxx@xxx.xx.xx
  • 测试是否联通
代码语言:javascript
复制
ansible test -m ping
--------------------
test | SUCCESS => {
    "changed": false,
    "ping": "pong"
}

介绍

Anable Ad-hoc::是个临时命令集

展示远程主机的/www下的所有文件以及文件夹

代码语言:javascript
复制
ansible test -m shell -a "ls /www" --user=root

目标主机需要密码如何处理?(ansible默认通过ssh公钥方式登录)

  1. 添加公钥文件,见上面无密码连接远程服务器设置
  2. 添加一个--ask-pass参数
代码语言:javascript
复制
ansible text -m shell -a "ls /www" --user=root --ask-pass

参数

  • 普通可选参数
代码语言:javascript
复制
-a --args  后面的整个内容当做一个参数来传给模块
-f --forks 并发控制机器
-m --module-name 指定模块,一般是ansbile自带的,比如ping,shell
-M --module-path 指定模块存放的路径,一般是自定义的一些模块
-i --inventory 改变默认的行为
  • 连接目标主机参数
代码语言:javascript
复制
-K --ask-pass 密码方式连接远程主机
--private-key 连接需要指定私钥的时候
-u --user 连接需要指定用户的时候
-c --connection 控制连接的类型
-T --timeout 控制连接的超时时间
  • 权限控制参数
代码语言:javascript
复制
-s --sudo 需要执行sudo命令的时候
-S --su 需要执行su切换用户命令的时候
-b --become 普通用户要切换到root用户,并且切换过程不需要密码的时候
Ansible Inventory

定义主机关系的文件 默认路径为/etc/ansible/hosts (没有的话,创建一下) 文件内容格式是ini格式的

  • Inventory主机组 -- > [组名]
代码语言:javascript
复制
xxx.xx.xx.xx
[组名]
xxx.xx.xx.xx
xxx.xx.xx.xx
  • Inventory主机别名
代码语言:javascript
复制
jumper ansible_ssh_port=22 ansible_ssh_host=xxx.xxx.xx.xx ansible_ssh_user=root

这样,这个主机的别名就是jumper

  • Inventory连接参数
代码语言:javascript
复制
ansible_ssh_host # 连接的远程主机名
ansible_ssh_port # ssh端口号
ansible_ssh_user # 默认的ssh用户名
ansible_ssh_pass # ssh 密码(不安全,建议使用--ask-pass 或者ssh秘钥)
ansible_sudo_pass # 密码(不安全,建议使用--ask-sudo-pass)
  • Inventory批量主机组
代码语言:javascript
复制
[webservers]
www[01:50].example.com

[databases]
db-[a:f].example.com

后记

以上都是最基本的概念,命令,之后会说说ansible的playbook的,peace yo~

本文作者为olei,转载请注明。

ansible

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-12-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 安装
  • 基础介绍
    • 准备
      • 介绍
        • Anable Ad-hoc::是个临时命令集
        • Ansible Inventory
    • 后记
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档