zoukankan      html  css  js  c++  java
  • Ansible安装配置

    http://www.unixmen.com/ansible-install-configure-and-use/

    Our goals is install, configure and use Ansible software in Ubuntu 14.04 x64. With this software you can control and manage a lot of Linux/UNIX servers as puppet from management server. The difference is puppet is written with Ruby but, ansible is written with Python programming language. Commands in puppet and ansible is different but global scheme is the same. One big difference is ansible using SSH key for authorization on client machines (puppet is install agents on client machines) and all configurations going through ssh. For that, before all you must generate SSH key on master server and send public key for all client machines.

    In our configuration we will use 5 servers. They are ansmaster and node1ansnode2ans,node3ansnode4ans.

    Our network topology will be as following:
    Ansible-Topology

    Firstly we must install and configure master server ansmaster.unixmen.com

    Update, install repositories/packages and install new repositories for ansible.

    root@ansmaster:~# apt-get update
    root@ansmaster:~# apt-get dist-upgrade

    root@ansmaster:~# apt-add-repository ppa:ansible/ansible -y
    gpg: keyring `/tmp/tmpwvqe7axu/secring.gpg’ created
    gpg: keyring `/tmp/tmpwvqe7axu/pubring.gpg’ created
    gpg: requesting key 7BB9C367 from hkp server keyserver.ubuntu.com
    gpg: /tmp/tmpwvqe7axu/trustdb.gpg: trustdb created
    gpg: key 7BB9C367: public key “Launchpad PPA for Ansible, Inc.” imported
    gpg: Total number processed: 1
    gpg:               imported: 1  (RSA: 1)
    OK

    root@ansmaster:~# apt-get update && sudo apt-get install ansible -y

    Look at ansible version.
    root@ansmaster:~# ansible –version
    ansible 1.9.4
    configured module search path = None

    Create key on our ansmaster server.
    root@ansmaster:~# ssh-keygen -t rsa -b 4096 -C “ansmaster@unixmen.com”
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa):
    Created directory ‘/root/.ssh’.
    Enter passphrase (empty for no passphrase):
    Enter same passphrase again:
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    45:7a:75:d1:2e:24:c6:2e:35:1a:d3:ac:e3:4a:54:f9 ansmaster@unixmen.com
    The key’s randomart image is:
    +–[ RSA 4096]—-+
    |          .=. oo |
    |         o=.O.. .|
    |        ..oX + . |
    |        .o= E . .|
    |       .S. o   . |
    |        . .      |
    |       . .       |
    |        .        |
    |                 |
    +—————–+

    Copy already created pubic key to other servers with scp command.

    Note: First time in yours ansmaster server you must try to connect with ssh to localhost, after write yes and click to Enter button(after that you can break connection with Ctrl+C). This will automatically create ~/.ssh folder. We need this is for known_hosts file. When you first time try to connect to any machines, automatically creates ~/.ssh folder and~/.ssh/known_hosts file. We must do this operation on all client nodes too.
    root@ansmaster:/root/.ssh# ssh node1ans
    root@ansmaster:/root/.ssh# ssh node2ans
    root@ansmaster:/root/.ssh# ssh node3ans
    root@ansmaster:/root/.ssh# ssh node4ans

    For description we will copy public key with our hostname:
    root@ansmaster:~# cd /root/.ssh/
    root@ansmaster:/root/.ssh# cp id_rsa.pub `hostname`.id_rsa.pub

    Copy pubic key from ansmaster server with scp command to all client machines ~/.sshfolder (On Ubuntu client machine you must firstly copy to user home folder and after from sudo user copy this key to /root/.ssh folder):
    root@ansmaster:/root/.ssh# scp ansmaster.id_rsa.pub jamal@node1ans:/home/jamal/
    root@ansmaster:/root/.ssh# scp ansmaster.id_rsa.pub root@node2ans:/root/.ssh/
    root@ansmaster:/root/.ssh# scp ansmaster.id_rsa.pub root@node3ans:/root/.ssh/
    root@ansmaster:/root/.ssh# scp ansmaster.id_rsa.pub root@node4ans:/root/.ssh/

    Then you must copy this key to authorized_keys file in the ~/.ssh/ folder(Before that go to the /root/.ssh folder on all client machines):
    root@node1ans:/# cd /root/.ssh/
    root@node1ans:/root/.ssh# cat ansmaster.id_rsa.pub >> authorized_keys

    [root@node2ans ~]# cd /root/.ssh/
    [root@node2ans .ssh]# cat ansmaster.id_rsa.pub >> authorized_keys

    [root@node3ans ~]# cd /root/.ssh/
    [root@node3ans .ssh]# cat ansmaster.id_rsa.pub >> authorized_keys

    root@node4ans:~ # cd /root/.ssh/
    root@node4ans:~/.ssh # cat ansmaster.id_rsa.pub >> authorized_keys

    Create client nodes.
    Firstly we will create node1ans.unixmen.com.

    Update repositories for Ubuntu node1ans:
    root@node1ans:~# apt-get update && apt-get dist-upgrade -y

    Update repositories for CentOS node2ans and node3ans:
    [root@node2ans ~]# yum upgrade -y

    Note: On CentOS7 servers if you will choose Basic server, there are will not network utilities. You must install them.
    [root@node2ans ~]# yum install net-tools -y

    Note: On CentOS7 servers disable SeLinux and Firewall. We will change the line asSELINUX=disabled in node2ans and node3ans servers /etc/selinux/configconfiguration file(reboot after changes).
    [root@node2ans ~]# systemctl disable firewalld
    rm ‘/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service’
    rm ‘/etc/systemd/system/basic.target.wants/firewalld.service’

    [root@node2ans ~]# systemctl stop firewalld

    [root@node3ans ~]# systemctl disable firewalld
    [root@node3ans ~]# systemctl stop firewalld

    For FreeBSD client machine update repositories:
    root@node4ans:~ # portsnap fetch extract update

    Answer yes for all questions:
    root@node4ans:~ # pkg update
    root@node4ans:~ # pkg upgrade

    Install Python27 from the ports:
    root@node4ans:~ # cd /usr/ports/lang/python27
    root@node4ans:~ # make config
    ansible-freebsd-python
    root@node4ans:~ # make -DBATCH install

    root@node4ans:~ # rehash
    root@node4ans:~ # which python2.7
    /usr/local/bin/python2.7
    root@node4ans:~ # ln -s /usr/local/bin/python2.7 /usr/bin/python

    Create ansible automatization
    We will create two group of servers. all – all servers will be here and webservers – only web servers will be here. Configurations will be in the /etc/ansible/hosts file as following:
    root@ansmaster:~# cat /etc/ansible/hosts | grep -v “#” | grep -v ‘^$’
    [all]
    node1ans.unixmen.com
    node2ans.unixmen.com
    node3ans.unixmen.com
    node4ans.unixmen.com

    [webservers]
    node2ans.unixmen.com
    node3ans.unixmen.com

    For example with -m(define the using module) option we will use ping module and send ping to all members of “webservers” and “all” groups. You can get list of all modules from the http://docs.ansible.com/ansible/list_of_all_modules.html official page.
    root@ansmaster:~# ansible -m ping webservers
    node3ans.unixmen.com | success >> {
    “changed”: false,
    “ping”: “pong”
    }

    node2ans.unixmen.com | success >> {
    “changed”: false,
    “ping”: “pong”
    }

    root@ansmaster:~# ansible -m ping all
    node4ans.unixmen.com | success >> {
    “changed”: false,
    “ping”: “pong”
    }

    node3ans.unixmen.com | success >> {
    “changed”: false,
    “ping”: “pong”
    }

    node2ans.unixmen.com | success >> {
    “changed”: false,
    “ping”: “pong”
    }

    node1ans.unixmen.com | success >> {
    “changed”: false,
    “ping”: “pong”
    }

    With command module you can send system commands to all client machines:
    root@ansmaster:~# ansible -m command -a “uptime” all

    With SHELL module you can send system commands to all client machines:
    root@ansmaster:~# ansible -m shell -a “hostname” all
    node1ans.unixmen.com | success | rc=0 >>
    node1ans

    node3ans.unixmen.com | success | rc=0 >>
    node3ans.unixmen.com

    node2ans.unixmen.com | success | rc=0 >>
    node2ans.unixmen.com

    node4ans.unixmen.com | success | rc=0 >>
    node4ans.unixmen.com

  • 相关阅读:
    安装VS2003出现“FrontPage 2000 WEB 扩展客户端”安装失败时
    字符编码:ASCII,Unicode和UTF8
    AWK学习笔记
    static关键字用法总结
    拷贝构造函数,浅拷贝与深拷贝
    安装IIS步骤图解
    配置SQL Server 2005 Express的身份验证方式,以及如何启用sa登录名
    ASP.NET的学习
    C# 中的委托和事件(转)
    OSI七层模型
  • 原文地址:https://www.cnblogs.com/itech/p/5235376.html
Copyright © 2011-2022 走看看