在Debian 8 上安装自动化工具Ansible

ansible     基于ssh 快速上手(python)没有限制语言(bash,python,perl,ruby)Fedora ,rackspace,evernote在用
saltstack (c/s)架构  python
puppet   (c/s)架构  Google在用  ruby语言  (master ,node)
chef       (c/s)架构  ruby  (workstation开发,server,node ) 需要git,有web ui

如果你是新手,就不要犹豫了,ansible是你最好的选择,本人菜鸟一个。废话少说,开始安装!

实验环境:

192.168.3.190  

192.168.3.191

192.168.3.192

192.168.3.193

1)配置ssh免密码登陆

 root@debian:~# ssh localhost

 root@debian:~# ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa

 root@debian:~# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

 root@debian:~# scp -r /root/.ssh 其他机器:/root

 root@debian:~# chmod 600 /root/.ssh/authorized_keys

接下来:

2)root@debian:~# apt-get install ansible

root@debian:~# ansible --version

ansible 1.7.2

3)Ansible配置

 

a) 主机定义:

root@debian:~# vim /etc/ansible/hosts

[local]

192.168.3.190  可以是IP或主机名;

[other]

192.168.3.191

192.168.3.192

192.168.3.193

在这里,我定义了两个组,简单说一下,一个主机可以有多个组,建议组名好记一些,因为测试要用。当然你也可以看文件里面的注释。

 

b)测试

语法ansible <host-pattern> [options]

      ansible <pattern_goes_here> -m<module_name> -a <arguments>

 

root@debian:~# ansible other -m ping

 

192.168.3.192 | success >> {

 

    "changed": false,

 

    "ping": "pong"

 

}

 

192.168.3.191 | success >> {

 

    "changed": false,

 

    "ping": "pong"

 

使用ping测试,以显示成功,可以继续其他操作(如果你不懂ping,神仙也救不了你啦)

 

常见命令选项:

  -m 模块名 

  -a 参数

  -s是此用户sudo无需输入密码

 

                   注意:命令有挺多的,只列举了几个常用的。

我用ansible的需要是,老大有的时候让我去改配置文件或者上传点东西太浪费时间啦,我不能一台台机器去ssh吧,现在不流行devops嘛!如果你不懂什么意思,还是去多看看书吧,虽然我也不懂!

3)安装服务(可以用playbook):

  root@debian:~# ansible local -a  'apt-get  -y  install softname'

  root@debian:~# ansible all -m command -a "apt-get  -y  install softname"

     命令执行的结果是一样,目前看,单引号和双引号没什么区别,但没有是不行的。

4)文件管理模块-file

   主要用来设置文件、链接、目录的属性,或者移除文件、链接、目录,很多其他的模块也会包含这种作用(简单演示怎么用,上手快,其他的细节还需自己去领悟)

##远程拷贝文件----COPY

      ansible other -m copy -a "src=/etc/ansible/ansible.cfg dest=/tmp/ owner=root group=root mode=0644"

##删除远程的文件

     ansible other -m file -a "dest=/tmp/ansible.cfg  state=absent  mode=0644"  删除远程的目录

     说明:(1)State果是目录不存在,那么会创建目录;如果是文件不存在,那么不会创建文件;如果是link,那么软链接会被创建或者修改;如果是absent,那么目录下的所有文件都会被删除,如果是touch,会创建不存在的目录和文件

     (2)copy:

        backup:在覆盖之前,将源文件备份,备份文件包含时间信息。有两个选项:yes|no

        content:用于替代“src”,可以直接设定指定文件的值

        dest:必选项。要将源文件复制到的远程主机的绝对路径,如果源文件是一个目录,那么该路径也必须是个目录

        directory_mode:递归设定目录的权限,默认为系统默认权限

        force:如果目标主机包含该文件,但内容不同,如果设置为yes,则强制覆盖,如果为no,则只有当目标主机的目标位置不存在该文件时,才复制。默认为yes

        others:所有的file模块里的选项都可以在这里使用

        src:被复制到远程主机的本地文件,可以是绝对路径,也可以是相对路径。如果路径是一个目录,它将递归复制。在这种情况下,如果路径使用“/”来结尾,则只复制目录里的内容,如果没有使用“/”来结尾,则包含目录在内的整个内容全部复制,类似于rsync

5)用playbook安装服务:

  root@debian:~# cat apache2.yml

---

- hosts: other

  tasks:

    - name: Install apache2 web server

      apt: pkg=apache2  state=installed update_cache=true

接下来执行playbook

root@debian:~# ansible-playbook apache2.yml

注意事项:YAML 还有一个小的怪癖. ansible的 YAML 文件一般开始行都应该是 --- 这是 YAML 格式的一部分, 表明一个文件的开始.(本人试验过,可以去掉不写的!)

     列表中的所有成员都开始于相同的缩进级别, 并且使用一个 "- " 作为开头(一个横杠和一个空格):

     一个字典是由一个简单的 的形式组成(这个冒号后面必须是一个空格):

 

 

总结:第一天学习ansible,把学习的过程记录下来!稍后会继续学习其他模块。

       有没有觉得自动化很爽!!!

 

 

 

 

转载于:https://www.cnblogs.com/chenjiaxin--007/p/6704579.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值