Ansible配置

配置文件:/etc/ansible/ansible.cfg

[default] 默认配置

  • inventory = /etc/ansible/hosts主机清单
  • library = /usr/share/my_modules库
  • module_utils = /usr/share/my_module_utils模块路径
  • remote_tmp = ~/.ansible/tmp远程临时路径
  • local_tmp = ~/.ansible/tmp本地临时路径

ansible执行一个命令会生成python脚本,存放于local_tmp,并复制到remote_tmp,目标主机执行此脚本,执行结束后即删除。

  • plugin_filters_cfg = /etc/ansible/plugin_filters.yml插件配置文件
  • forks = 5并行执行操作数
  • poll_interval = 15间隔:多长时间拉一次数据
  • sudo_user = root默认用户名

连接到对方切换到sudo执行

  • ask_sudo_pass = True是否询问口令
  • ask__pass = True是否支持用户口令
  • transport = smart传输
  • remote_port = 22远程主机端口号
  • module_lang = C默认语音
  • module_set_locale = False
  • log_path = /var/log/ansible.log日志文件(建议启用,默认不记录日志)
  • host_key_checking = False连接到远程时是否需要验证公钥

第一次连接,需要单独用命令连接,并确定连接,否则没有.ssh/known_hosts,导致连接失败,解决方法:rm -f .ssh/known_hosts。因此需要把此项设为False,即不会有这个问题。

Ansible系列命令

  • ansible-doc显示模块帮助(类似man命令)
-a 列出所有
-l 列出可用模块列表
-s --snippet 显示指定模块的playbook片段(短格式,简洁)

命令格式

ansible <HOST-PATTERN> [-m MODULE_NAME] [-a ARGS]

-v 详细 -vv -vvv 更详细
--list-hosts 显示主机列表 ,可简写 --list
-k 提示输入ssh密码,默认Key验证
-K 输入sudo的口令
-c 检查,并不执行
-T 默认超时时间
-u 远程执行的用户
-b 代替旧版本sudo切换
-m 指定模块
--version 版本号

ansible servers -m command -u boxker -k -a 'ls /root'用boxker身份查看root目录。若boxker权限不够,则失败。-m command是默认模块,可省略。解决方法1:以root身份连接 ansible servers -m command -u root -k -a 'ls /root' 2.ansible servers -m command -u boxker -k -a 'ls /root' -b -K以boxker身份连接,用root身份(默认)执行,需要sudo口令。用visudo管理sudo的配置文档/etc/sudoers。当用户执行sudo时,系统会主动寻找/etc/sudoers文件,判断该用户是否有执行sudo的权限visudo精确用户赋权(sudo)

查看彩色文字:echo export EDITOR=vim >> /etc/profile.d/env.sh

ssh-keygen

设置完即可无需 -k 输密钥

  1. ssh-keygen回车
  2. ssh-copy-id IP回车

Linux使用ssh-keygen实现SSH无密码登录

ssh-keygen的使用方法以及ssh-keygen参数说明

HOST-PATTERN

all 所有
* 通配符
: 或
:& 与
:! 非
正则

用到&,需要用引号引起来(在linux里表示后台运行)

ansible-galaxy

连接galaxy.ansible.com 下载对应的roles

ansible-galaxy list geerlingguy.nginx查看本机geerlingguy.nginx

ansible-galaxy install geerlingguy.nginx安装geerlingguy.nginx,默认下载在家目录的隐藏目录.ansible/roles/中。

ansible-galaxy remove geerlingguy.nginx删除role,亦可把目录直接删除。

ansible-pull

推送命令至远程,效率无限提升,对运维要求高。(使用不多)

ansible-playbook

下一章。

ansible执行过程

ansible命令执行过程

  1. 加载配置文件
  2. 加载对应模块
  3. 将模块或命令生成临时py文件并传输
  4. 给文件 +x 权限执行
  5. 执行并返回结果
  6. 删除临时文件,并 sleep 0 退出

ansible执行状态

  • 绿色:执行成功并且不需要做改变的操作
  • 黄色:执行成功且对目标主机做变更
  • 红色:执行失败
  • 蓝色:显示详细过程

ansible常见模块

1. Command模块

默认模块,可忽略 -m选项

次命令不支持$VARNAME < > & | ;等,用shell实现

参数:

-chdir 执行命令前先进入目录

-creates 指定的文件若存在则不继续操作

-remove 指定的文件若不存在则不继续操作

ansible all -a 'removes=/etc/fs cat /etc/fstab'

getent 用来察看系统的数据库中的相关记录getent [选项...] 数据库 [键 ...]

2. Shell 模块

语法实验与Command差不多

支持特殊符号

3. Script 模块

运行脚本,可指定参数

例 :ansible all -m script -a 'test.sh'

linux下的stdin,stdout和stderr理解

SELinux 与强制访问控制系统

/etc/sysconfig/selinux/selinux : selinux=permissive,disable,enable

4. Copy 模块

参数 说明
attributes 属性
backup 备份,避免覆盖
content 编辑文件内容,直接生成文件进行复制
dest 文件放在目标主机哪
mode 复制过去权限
owner 所有者
src 本机文件

例:ansible -m copy -a 'src=/bendiwenjian dest=/mubiaowenjian backup=yes mode=000 owner=boxker'默认情况下复制的文件属性会变。

ansible -m copy -a 'content="hello\n" dest=/data/hello'相当于cat。

5. Fetch 模块

从客户端取一个文件至服务器端,抓取远程文件,与copy相反,目录可先tar

src:源文件
dest:存放位置

ansible all -m fetch -a 'src=/var/log/messages dest=/data'

存放方式为dest目录下,为每个主机创建一个目录,然后是src路径

6. File 模块

设置文件属性

name,path,dest效果一样

ansible all -m file -a 'name=/data/f3 state=touch'创建一个新文件。

ansible all -m file -a 'name=/data/f3 state=absent'删除文件。

ansible all -m file -a 'name=/data/dir1 state=directory'创建一个文件夹。

ansible all -m file -a 'src=/etc/fstab dest=/data/fstab.link state=link'创建一个软链接。

7. Hostname 模块

管理主机名

ansible IP -m hostname -a 'name=node1'改主机名,会顺带把/etc/hostname修改,但是在centos7 :/etc/hosts未做修改,centos6 : /etc/sysconfig/network则会修改。

8. Cron 模块

计划任务

广播路径:/usr/bin/wall

ansible all -m cron -a 'minute=* weekday=1,3,5 job="/usr/bin/wall FBI warning" name=warningcron'周一、三、五,每分钟发出警告。

ansible all -m cron -a 'disabled=true job="/usr/bin/wall FBI warning"'关闭定时任务,即在crontab -e中注释。但是无法关闭上条任务,因为需要带上name,否则会注释新的name为none的新定时任务。

ansible all -m cron -a 'disabled=true job="/usr/bin/wall FBI warning" name=warningcron'关闭第一条设置的定时任务。

ansible all -m cron -a 'disabled=false job="/usr/bin/wall FBI warning" name=warningcron'启用第一条设置的定时任务。disable中用yes、no亦可。

ansible all -m cron -a 'job="/usr/bin/wall FBI warning" name=warningcron state=absent'删除第一条设置的定时任务。

9. Yum 模块

管理包

installed,latest,present安装(默认)
absent,removed删除
list查看

ansible all -m yum -a 'name=vsftpd'安装vsftp。依赖于自身yum仓库配置/etc/yum.repos.d/base.repo,禁用enabled=0。

ansible all -m yum -a 'list=installed'查看已安装的。

ansible all -m shell -a 'rpm -q vsftpd'查看。

ansible all -m yum -a 'name=vsftpd,httpd,memcached'安装多个包,用逗号隔开。

安装本地包

  1. 将本地包发到客户机
  2. 执行安装命令

忽略gpg_check: 添加disable_gpg_check=yes

ansible all -m yum -a 'name=dstat update_chche=yes'更新缓存。(dstat,监控工具)。

10. Service 模块

服务管理

name名字
enabled:是否开机启动(类似:systemctl enable 服务名)
state: started,reloaded,stoped,restarted

ansible all -m service -a 'name=vsftpd state=started enabled=yes'开启vsftpd服务,并开机自启。(systemctl is-enbale 服务名,查看是否开启自启)。

11. User 模块

管理用户

comment注释
create_home是否创建家目录
expires过期时间
group主组
groups附加组
home家目录
name用户名
password加密口令
remove当删除用户时删除家目录
state
system指定系统帐号
shell指定shell类型

ansible all -m user -a 'name=nginx shell=/sbin/nologin system=yes home=/var/nginx groups=root,bin uid=80 comment="nginx service"'创建nginx用户。

ansible all -a 'getent passwd nginx'查看创建的nginx用户信息。通常源码编译需要手动创建帐号,yum则自动创建好。

ansible all -m user -a 'name=nginx state=absent remove=yes'删除用户并删除家目录。

12. Group 模块

组管理

name
gid
state
system

ansible all -m group -a 'name=nginx system=true gid=80'创建nginx组。

Ansible的使用和模块化深入的更多相关文章

  1. 分享4个运维平台工具OSSIM、Ansible的学习思路

    对于当今企业安全来说,真正价值不在于亡羊补牢,也不在于一个或多个高危漏洞.企业在乎的是如何防患于未然,如何快速定位攻击,如何快速解决安全问题.OSSIM作为开源的安全信息管理平台,对于企业的需求来说毋 ...

  2. 1、Ansible简介及简单安装、使用

    参考Ansible权威指南:https://ansible-tran.readthedocs.io/en/latest/index.html 以下内容学习自马哥教育 Ansible: 运维工作:系统安 ...

  3. 学习ansible笔记1

    ansible的特点: -- 模块化设计 -- 仅需要ssh和Python即可以使用 -- 无客户端 -- 功能强大,模块丰富 -- 上手容易门槛低 -- 基于python开发,做二次开发更容易 -- ...

  4. 批量搞机(一):ansible简介、ansible安装

    一.ansible简介 Ansible是2013年推出的一款IT自动化和DevOps软件,目前由Redhat已签署Ansible收购协议.其是基于Python研发,糅合了很多老运维工具的优点实现了批量 ...

  5. 集群工具ansible使用方法

    ansible简介 ansible是与puppet.saltstack类似的集群管理工具,其优点是仅需要ssh和Python即可使用,而不像puppet.saltstack那样都需要客户端.与pupp ...

  6. Ansible学习笔记

    一.Ansible简介 Ansible是一种agentless(基于ssh),可实现批量配置.命令执行和控制,基于Python实现的自动化运维工具. 其特性有: ①模块化:通过调用相关模块,完成指定任 ...

  7. 翻译-Salt与Ansible全方位比较

    原文链接:http://jensrantil.github.io/salt-vs-ansible.html 作者: Jens Rantil 之前某些时候我需要评估配置管理系统.结合从他人得到的意见,我 ...

  8. 自动化运维工具ansible学习+使用ansible批量推送公钥到远程主机

    目录: 一.ansible简介 1.1.ansible是什么 1.2.ansible如何工作 1.3.ansible优缺点 1.4.ansible安装方式 1.5.ansible文件简单介绍 1.6. ...

  9. Ansible详解(一)

    简介 Ansible是一个简单的自动化运维管理工具,基于Python语言实现,由Paramiko和PyYAML两个关键模块构建,可用于自动化部署应用.配置.编排task(持续交付.无宕机更新等).主版 ...

随机推荐

  1. C 语言实例 - 判断正数/负数

    C 语言实例 - 判断正数/负数 用户输入一个数字,判断该数字是正数还是负数或是零. 实例 #include <stdio.h> int main() { double number; p ...

  2. CCPC吉林站

    A.The Fool #include <bits/stdc++.h> using namespace std; inline int read() { ,f=;char ch=getch ...

  3. Django -- 权限初识

    待 需求分析-场景 假设需要为公司设计一个人员管理系统,并为各级领导及全体员工分配系统登录账号.有如下几个要求: 1.权限等级不同 公司领导登录后可查看所有员工的信息,部门领导登陆后之可查看本部门员工 ...

  4. proxy_pass http://127.0.0.1:5000; 502 bad getway

    (13: Permission denied) while connecting to upstream:[nginx] I am working with configuring django pr ...

  5. 我的grunt配置

    module.exports = function(grunt) { // 配置. grunt.initConfig({ pkg: grunt.file.readJSON('package.json' ...

  6. 《深入理解java虚拟机》笔记(3)实战:OutOfMemoryError异常

    一.Java堆溢出 测试代码: /** * <p>Java堆异常测试</p> * <code>VM Args: -Xms20m -Xmx20m -XX:+HeapD ...

  7. CQRS之旅——旅程4(扩展和增强订单和注册限界上下文)

    旅程4:扩展和增强订单和注册限界上下文 进一步探索订单和注册的有界上下文. "我明白,如果一个人想看些新鲜的东西,旅行并不是没有意义的."儒勒·凡尔纳,环游世界80天 对限界上下文 ...

  8. Lodop套打

    记录一下Lodop套打模板 实现打印功能需电脑已经连接打印机(打印什么类型的东西就连接相应的打印机 (普通大打印机 打印标签 打印发票各种打印机))和已经安装好lodop控件 控件可到官网进行下载 h ...

  9. 一步步实现自己的ORM(二)

    在第一篇<一步步实现自己的ORM(一)>里,我们用反射获取类名.属性和值,我们用这些信息开发了简单的INSERT方法,在上一篇文章里我们提到主键为什么没有设置成自增长类型,单单从属性里我们 ...

  10. Mind must be master of the body, strong mind can separate the body from its suffering.

    Mind must be master of the body, strong mind can separate the body from its suffering.意志是身体的主人,有顽强的意 ...