zoukankan      html  css  js  c++  java
  • ansible 变更内网服务器配置

    https://serversforhackers.com/tag/ansible
    http://docs.ansible.com/ansible/developing_api.html
    https://github.com/linuxdynasty/ld-ansible-modules/blob/master/test/cloud/amazon/test_kinesis_stream.py

    ansible.cfg

    [defaults]
    forks          = 20
    transport      = ssh
    host_key_checking = False
    
    [ssh_connection]
    ssh_args = -F /data/ansible/ssh_config
    pipelining = true
    

    change_link.yaml

    ---
    - hosts: proxy
      remote_user: ansible
      become: yes
      become_user: root
      become_method: sudo
      vars: 
        proxy_host: '58.215.39.12'
      
      tasks: 
       - name: update /etc/hosts
         template: src=templates/hosts.j2 dest=/etc/hosts owner=root group=root mode=0644 
         notify: restart dnsmasq
    
      handlers:
        - name: restart dnsmasq
          service:  name=dnsmasq state=restarted
    

    templates/hosts.j2

    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    
    {{ proxy_host }} proxy.live
    

    ansible-playbook -i inventory change_link.yaml

    PLAY ***************************************************************************
    
    TASK [setup] *******************************************************************
    ok: [10.150.1.51]
    ok: [10.150.1.52]
    
    TASK [update /etc/hosts] *******************************************************
    changed: [10.150.1.51]
    changed: [10.150.1.52]
    
    RUNNING HANDLER [restart dnsmasq] **********************************************
    changed: [10.150.1.51]
    changed: [10.150.1.52]
    
    PLAY RECAP *********************************************************************
    10.150.1.51                : ok=3    changed=2    unreachable=0    failed=0   
    10.150.1.52                : ok=3    changed=2    unreachable=0    failed=0
    

    demo

    from collections import namedtuple
    from ansible.parsing.dataloader import DataLoader
    from ansible.vars import VariableManager
    from ansible.inventory import Inventory
    from ansible.playbook.play import Play
    from ansible.executor.task_queue_manager import TaskQueueManager
    
    Options = namedtuple('Options', ['connection', 'module_path', 'forks', 'become', 'become_method', 'become_user', 'check'])
    # initialize needed objects
    variable_manager = VariableManager()
    loader = DataLoader()
    options = Options(connection='local', module_path='/path/to/mymodules', forks=100, become=None, become_method=None, become_user=None, check=False)
    passwords = dict(vault_pass='secret')
    
    # create inventory and pass to var manager
    inventory = Inventory(loader=loader, variable_manager=variable_manager, host_list='localhost')
    variable_manager.set_inventory(inventory)
    
    # create play with tasks
    play_source =  dict(
            name = "Ansible Play",
            hosts = 'localhost',
            gather_facts = 'no',
            tasks = [
                dict(action=dict(module='shell', args='ls'), register='shell_out'),
                dict(action=dict(module='debug', args=dict(msg='{{shell_out.stdout}}')))
             ]
        )
    play = Play().load(play_source, variable_manager=variable_manager, loader=loader)
    
    # actually run it
    tqm = None
    try:
        tqm = TaskQueueManager(
                  inventory=inventory,
                  variable_manager=variable_manager,
                  loader=loader,
                  options=options,
                  passwords=passwords,
                  stdout_callback='default',
              )
        result = tqm.run(play)
    finally:
        if tqm is not None:
            tqm.cleanup()
    
  • 相关阅读:
    (转)解决AJAX中使用UpdatePanel后再用Response.Write();等无法弹出对话框问题 3法
    ASP.NET AJAX(开发代号Atlas)重要参考资源大收集
    Ajax.NET 和 Atlas 区别
    SqlDataAdapter的几种常用方法
    C# 2.0与泛型
    DataView 使用技巧 [转]
    .net事务
    SQL Server 2005 SQL Server 2000 改进
    Crystal Reports for Visual Studio 2005 学习一(报表绑定方案)
    oracle的substr函数的用法
  • 原文地址:https://www.cnblogs.com/liujitao79/p/ansible.html
Copyright © 2011-2022 走看看