
# Copyright 2017-present Open Networking Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.


---
#- name: fix the networking
#  shell: "{{ item }}"
#  with_items:
#    - ifconfig {{ eth_device }} hw ether {{ eth_mac }}
#    - ip route del default || true
#    - ip route add default via {{ gateway_ip }}
#    - arp -s {{ gateway_ip }} {{ gateway_mac }}


- name: download socat
  get_url: url=http://ftp.tu-chemnitz.de/pub/linux/dag/redhat/el6/en/x86_64/rpmforge/RPMS/socat-1.7.1.3-1.el6.rf.x86_64.rpm dest=/root/socat-1.7.1.3-1.el6.rf.x86_64.rpm
 
- name: install socat
  yum: name=/root/socat-1.7.1.3-1.el6.rf.x86_64.rpm state=present

- name: copy over setup answers
  template: 
      src: templates/setup_answers.txt.j2
      dest: /root/setup_answers.txt

- name: run the setup script
  shell: /a/sbin/setup.sh < /root/setup_answers.txt
  args:
      creates: /a/var/log/setup.log
