【非原创】关于ansible的一些学习资料的整理

举报
郁唯xiaolin 发表于 2019/07/12 13:54:41 2019/07/12
【摘要】 ansible 的安装以及一些模块的使用

一、前言

    先介绍几个中文版的文档吧,先上链接

    https://ansible-tran.readthedocs.io/en/latest/docs/intro_installation.html

    http://www.ansible.com.cn/docs/intro_getting_started.html

    以上两个链接内容一模一样,但是第一个提供了各种格式的下载,第二个没有提供下载,好像是马哥的团队出品的,偶尔会弹出广告

    http://getansible.com/

    上面这个网址是《ansible快速入门》得作者做的一个网站,看起来入门还挺好的。


二、安装

    看上面文档吧,略过


三、ansible一些常用的模块

    主要是为了记录一些常用的模块才写的这个文档,下面开始将我觉得比较常用的文档记录下来。

    ansible all -m “module”

    1、command模块

      * 这个模块不支持一些特殊字符比如:`<', `>', `|'等,所以如果想用这个可以使用接下来介绍的shell模块

      * windows下“command/shell”模块都不能使用,只能使用“win_command”模块

      * 如果要重启系统,只能使用reboot模块和win_reboot模块

      * 在远程机器上执行本地的脚本,可以使用scripts模块

      * 好像ansible的模块,不管是shell还是command,都不能使用“tail -f”或者“top”这样的命令

      示例:

        ansible all -m command -a "cat /etc/passwd"

        ansible all -m command -a "ls /root/ -la"

        ansible all -m command -a "/usr/bin/make_database.sh arg1 arg2 creates=/path/to/database" #这个creates 是在执行命令的时候判断这个目录是否存在,如果不存在就不继续往下执行了

    2、shell模块

      *有一些和command不一样的地方,有一些比command好的地方,比如支持管道符、重定向符号等

      示例:

        ansible all -m shell -a "mkdir /root/testansible/testdir chdir=/root/testansible"#chdir 意思是先进入目录然后再执行命令

        ansible all -m shell -a "mkdir /root/testansible/testdir creates=/root/testansible/testdir"#creates意思是先filename是否存在,如果存在则不执行命令

        ansible all -m shell -a "echo "testword" >> /root/testansible/testdir removes=/root/testansible/testdir"#removes意思是如果不存在,则不执行

        如果在ansible-playbook中使用,则应该这么写了

        shell: echo "testword" >> /root/testansible/testdir

          args: 

         chdir: /root/testansible

         creates: somelog.txt


    3、yum模块

      这个模块很显然是在红帽系列的linux系统中进行包管理的模块

      先介绍下个人觉得比较常用的模块参数:

         update_cache:类似于yum clean all &&yum makecache命令,可选值为:yes/no,默认no

        state:包的最终需要的状态,present/latest 是安装包/最新的版的包,absent用于删除包

        list:列出包,可选值为:`installed', `updates', `available' and `repos'

        download_only:下载包,只下载不安装

        download_dir:下载包的目录

        

      示例:

        ansible -m yum -a "name=httpd,state=latest"#安装包

         ansible -m yum -a "name=httpd,state=absent"#移除包

       ansible -m yum -a "name=httpd-2.2.29-1.4.amzn1,state=present"#安装指定版本的包(还可以在name处写上包所在的绝对路径安装本地的包)

       ansible -m yum -a "name=*,state=latest" #升级所有包

    

    4、apt模块

      这个模块的使用和yum很像,毕竟都是包管理软件,apt模块是管理ubuntu的包管理软件

      比较常用的模块参数:

        update_cache:可选值:yes/no,默认为no,如果为yes则类似于命令apt update

         upgrage:可选值为:yes/safe/full/dist,默认为yes,如果为yes/safe则类似于命令:apt upgrade

        deb:后面接远程主机的deb包的绝对路径

        

      示例:

        ansible -m apt -a "name=httpd , state=present"

        ansible -m apt -a "name=httpd , state=latest"

        ansible -m apt -a "name=httpd=2.2.29 , state=present"#安装指定版本的httpd

        

    5、copy模块和fetch模块

      copy模块的作用是将ansible执行主机的文件拷贝到远程节点上,fetch模块的作用是将远程节点上的文件拷贝到ansible执行主机上;

      比较常用的模块参数:

        src:源文件(目录)的路径,绝对路径,如果路径加“/”,则将目录下的文件copy,如果不加则将此目录copy

        dest:目的文件(目录)路径,如果src是文件夹,这个就必须是文件夹了

        backup:是否备份,默认no,可选参数“yes/no”

        follow:文件夹的link也会copy过去

        owner/group/mode:一些权限相关配置

      示例:

        ansible all -m copy -a "src=/tmp/tmpfile dest=/root/tmpfile.sh backup=yes owner=zhangsan group=zhangsan mode=0644"

        











【版权声明】本文为华为云社区用户翻译文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容, 举报邮箱:cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。