1 安装ansible

centos安装:

# yum -y install epel-release    //更新本地安装库
# yum list all *ansible*   //查看相应的版本
# yum info ansible         //查看ansible的信息
# yum install ansible      //开始安装

2 ansible的配置文件

  • /etc/ansible/ansible.cfg 主配置文件
  • /etc/ansible/hosts Inventory
  • /usr/bin/ansible-doc 帮助文件
  • /usr/bin/ansible-playbook 指定运行任务文件

3 定义一个Linux集群组

(1)修改/etc/ansible/hosts

# cd /etc/ansible/
# cp hosts{,.bak}
# > hosts
# cat hosts
[webserver]
127.0.0.1
192.168.10.149
[dbserver]
192.168.10.113

(2)指定相应的配置文件

大部分时候,对/etc/ansible/hosts 文件的修改,需要root权限,而往往工作中我们都是使用的普通用户进行登录,所以一般在自己的文件夹中单独创建一个hosts文件,然后在执行命令的时候指定解析自己的hosts文件即可,文件修改语法不变,执行命令如下:

  • -i {配置文件路径}

    # ansible webserver -i ~/.ansible/hosts -m command -a 'ls ~'
    

4 密钥连接

在进行批量管理的时候,通常需要密码认证,这个时候有两种方式:

  • 每次执行命令都输入一次密码(比较麻烦)

    • -k,是小写的,然后输入密码即可
    # ansible webserver -i ~/.ansible/hosts -m command -a 'ls ~' -k
    

  • 使用ssh方式将密钥传输到指定的主机

    //首先生成ssh密钥
    # ssh-genkey -t rsa    //连续按enter即可
    //将同ssh密钥拷贝到远程主机
    # ssh-copy-id -i .ssh/id_rsa.pub zhangsan@192.168.1.10    //-i表示指定的ssh密钥
    # ssh-copy-id zhangsan@192.168.1.10    //或者直接在ssh密钥的文件夹
    

5 基础教程用法

  • ping

    enable this config, record_host_keys=Flase. And add the host’s ip address in the file(/etc/ansible/hosts).

    $ ssh-keygen$ ssh-copy-id [ip_address]
    $ ansible -m ping
    
  • ansible-playbook: execute a script.

    $ ansible-playbook hello.yml
    $ cat hello.yml
    

  • ansible-vault: encrypt or decrypt a file, to ensure the secrity of the file.

    $ ansible-vault encrypt hello.yml
    $ ansible-vault decrypt hello.yml
    
  • ansible-console: A interact command line of ansible.

Ansible Module:

  • use module:

    • command: execute only system command
    • shell: execute the command via shell process
    • raw: execute the low level command
    $ ansible [host group] -m [module name] -a "[command line]"
    $ ansible webserver -m command/shell -a "ls /etc"
    

    Change default module:

    A tutorials of ansible module

    change config file(/etc/ansible/ansible.cfg), enable the line and change it.

    module_name = command  // change it to shellmodule_name = shell
    
  • script: Run a script on the remote hosts

    $ ansible [host group] -m script -a "test.sh"
    
  • copy: Copy files from current host to remote hosts.

    $ ansible [host group] -m copy -a "src=/etc/systemfig dest=data/os.txt" owner=[user name] mode=600$ ansible webserver -m copy -a "src=/home/centos/pig/1.txt dest=/home/root123/2.txt owner=root123 mode=600"
    

  • fetch: Fetch a file from remote hosts. This must be a file, not a directory. Like copy.

    $ ansible all -m fetch -a "src=/etc/os-release dest=/home/centos/pig/tem"
    

  • file: change file’s attributes, create a empty file.

    $ ansible webserver -m file -a "path=/home/root123/new.txt state=touch"
    

  • unarchive: unzip a file.

    $ ansible webserver -m unarchive -a "src=./etc.tar.gz dest=/home/root123/ owner=root123 mode=600"   // push the zip file to the remote hosts and unzip it.
    

6 ansible转义

ansible 中想执行 lvm vgs | grep ceph | awk '{print $1}' | xargs -I {} lvm vgremove -f {} 命令

排查结果发现 lvm vgs | grep ceph | awk '{print $1}' 中 awk '{print $1}' 失效

最终发现是 $ 符出了问题,添加转义字符 \ 后,ok

ansible all -i  inventories/production/infrastructure -m shell -a "lvm vgs | grep ceph | awk '{print \$1}'| xargs -I {} lvm vgremove -f {}" --become

Reference

  • https://segmentfault.com/a/1190000038230424
  • Ansible中文权威指南
  • automate-with-ansible
  • automate-with-ansible in simple chinese
  • https://blog.csdn.net/Man_In_The_Night/article/details/93464540

写在最后

欢迎大家关注鄙人的公众号【麦田里的守望者zhg】,让我们一起成长,谢谢。

ansible入门快速上手使用教程相关推荐

  1. thinkcmf5调用指定分类的二级_Tengine快速上手系列教程amp;视频:基于Python API的图片分类应用入门丨附彩蛋...

    前言:近期,Tengine团队加班加点,好消息接踵而来,OpenCV 4.3.0发布,OPEN AI LAB AIoT智能开发平台Tengine与OpenCV合作共同加速边缘智能,Tengine再获业 ...

  2. Mobx-basic(快速上手)莞式教程

    Mobx-basic(快速上手)莞式教程 之前写过一篇redux的教程 可以参考redux的教程 本篇讲通过通俗易懂的方式让你快速上手mobx 的基本使用,虽然已经可以满足大部分开发中的需求但是详细 ...

  3. P4 Tutorial 快速上手 (1) 教程库简介

    P4 Tutorial 快速上手 (1) 教程库简介 提示:本系列仅适用于软件交换机BMv2 P4 Tutorial 快速上手系列 (2) 文章目录 P4 Tutorial 快速上手 (1) 教程库简 ...

  4. xmind快速上手使用教程,提高工作效率

    文章目录 1 xmind快捷键 1.1 文件 1.2 编辑 1.3 插入 1.4 查看 1.5 自定义快捷键 2 快速上手使用,创建一个好看的思维导图教程 3 使用xmind快速创建一个思维导图 1 ...

  5. git 32位_完整的GIT笔记 快速上手小白教程

    GIT 是什么? Git 是目前世界上最先进的分布式版本控制系统.并且它是一个免费的.开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目. 什么是版本控制系统 版本控制是一种系统,它跟踪一 ...

  6. 工具推荐丨ui入门快速上手的设计工具

    最近在5G冲浪的时候看到一个做UI的小姐姐分享工作日常,其中有个画面是她的电脑桌面,像这样: 就因为这一个画面,下面评论不和谐了,像这样: 大佬都这么暴躁的吗? 我觉得不管使用什么软件,软件仅仅是一个 ...

  7. php zend框架入门,Zend Framework 入门——快速上手

    1. 安装 从 Zend Framework 的网页上下载最新版本.解压后,把整个目录拷贝到一个理想的地方,比如:/php/library/Zend. 打开 php.ini 文件,确认包含 Zend ...

  8. Makefile急急急【快速入门快速上手】

    文章目录 Makefile急急急 工程管理器 makefile的好处 一个实际的例子 文件内容 main.c tool1.c tool2.c 分析文件依赖关系 最简单的makefile 第一次优化-- ...

  9. github上手实践教程

    简介: SSH公私钥的使用 github的使用 git 工具的基本使用 基本步骤: 一.github的使用 1.github账号的创建[官网一步一步创建就行了,这一步骤省略] 2.创建远程仓库: 创建 ...

最新文章

  1. 【Flask】数据的CRUD之更新和删除操作
  2. 字节、半字、字对齐方式
  3. Python报错:UnicodeDecodeError:‘ascii‘ codec can‘t decode byte 0xe8 in position
  4. Post/Redirect/Get模式防止表单重复提交
  5. hdu 1251 统计难题(求前缀出现了多少次)
  6. Canvas制作动态进度加载水球
  7. Notepad++中的UTF-8无BOM格式编码
  8. 201671010128 2017-10-08《Java程序设计》之接口与内部类
  9. 捕鱼分鱼、出售鱼、平分七筐鱼
  10. Unity Animation和Animator的区别
  11. 2022 基于SpringBoot/SSM的数据库查询平台
  12. python和r哪个好学知乎_r语言和python学哪个?
  13. IPD数字诀(一二三四五六七八九十)
  14. PPSIG携手100+位contributor,共建飞桨开源社区
  15. 深入理解JVM(三)——JVM之判断对象是否存活(引用计数算法、可达性分析算法,最终判定),Eclipse设置GC日志输出,引用
  16. Unity 安卓 apk 反编译 重新打包 签名修改
  17. 国企招聘计算机笔试考什么区别,国企秋招要来了!看看你能报考哪家国企!
  18. 转:GIS不是花瓶——由地震引起的思考
  19. 批量保存拼多多批发商城商品主图及视频
  20. 批量对下载的pdf文献重命名

热门文章

  1. linux脚本实时监控,linux实时监控命令
  2. 去掉快捷方式图标的标志
  3. 程序员这个冷冬怎么过?!
  4. 零跑汽车股价突破低谷,迎来新生
  5. Unity 对接4399广告 仅视频
  6. ACM有什么用(转)
  7. 【毕业设计】深度学习手写字符识别系统 - python 卷积神经网络
  8. 微信接口获取用户信息userinfo
  9. idea报错:Parameter ‘userName‘ not found. Available parameters are [userinfo, param1]] with root cause
  10. 阿里云3D架构图绘制工具寻找分析结果