Jump to content

All Activity

This stream auto-updates     

  1. Last week
  2. rev.dennis

    A Done Deal

    Col. 2:11-15 -------------------------------------------------------------------------------- And you, being dead in your sins and the uncircumcision of your flesh, hath he quickened together with him, having forgiven you all trespasses (Colossians 2:13 KJV) You have negotiated a contract. All parties are happy with the terms. The check is written. You are given title. The deed is conveyed to your name. The deal is done. And the good news is that you are not in debt. You have free and clear title to the item you purchased. It is a good feeling. Paul continues to teach about our sufficiency in Christ to the church in Colossae. These members were worried about some of the works related faith being promoted by others. So the worry begins. It was needless worry. We have been free from sin. We are no longer ruled by sin but are now ruled by the Savior. Think of a long term illness. When you are sick for a long time, the pain and symptoms rule your life. I believe this is why the ministry of healing was part of Jesus' work before He went to the cross. For many people, illnesses and impaired conditions ruled their lives. A man born blind is ruled by darkness. Jesus comes and heals the man. He is free from darkness. It is a complete healing. A man is deaf and dumb from birth. Jesus touches the man's ears and tongue and he speaks and hears. Completely. A woman comes to Jesus with a serious blood flow condition. It has kept her from worship. It has cost her a fortune. She cannot escape the torment and Jesus heals her completely. A man born with a withered arm is asked to stretch it and Jesus makes it completely whole. God negotiated a new covenant with mankind. When Jesus cried out, "It is finished" on the cross, the deal was done. Because of that transaction is complete - We Are Complete in Our Salvation. We Are Complete in Our Forgiveness. We Are Complete in Our Victory. I. WE ARE COMPLETE IN OUR SALVATION. In whom also ye are circumcised with the circumcision made without hands, in putting off the body of the sins of the flesh by the circumcision of Christ: Buried with him in baptism, wherein also ye are risen with him through the faith of the operation of God, who hath raised him from the dead. (Colossians 2:11-12) Not By Works: The human tendency is to try to work our way into God's graces. Paul, interestingly enough, speaks of circumcision. Why? It was one of the biggest stumbling blocks for so many in the early days of the church. It is also a good example to teach from. In Paul's day the Jewish practice was to circumcise a baby boy on the eighth day after he was born per Leviticus 12:2-3. The Mosaic Code incorporated this practice that was given by God to Abraham in Genesis 17:10-14. This was a symbolic function: "...it shall be a token of the covenant..." The word token is translated as sign or signal or beacon. It points to a greater truth. There were two views on circumcision among the Jews. Some took the view that when you circumcised a child, he was saved. He was automatically numbered among God's faithful. In their thinking, this work was all that was necessary. Yet Paul writes in Romans 9:6, "For they are not all Israel, which are of Israel..." In others words, not every circumcised Israelite was faithful to God for salvation. One example is Judas Iscariot. He was a circumcised Jew and Jesus called him the "Son of perdition" (Jn 17:12). And again we have in John 6:70 where Jesus said to His disciples, "Have not I chosen you twelve, and one of you is a devil?" There is a similar error today. It is with baptism. There are some who will teach that one must be baptized in water to be saved. These are the groups that often include infant baptism in their faith practice. Why? A few reasons: Certain reformed groups see baptism as the new sign that replaced circumcision. Because the church has replaced Israel, in their mind baptism is the new sign of the covenant. Infants must be baptized to be identified as part of the community of faith. This group does not make belief part of the equation but does demand evangelizing the child later in life. The Orthodox groups see infant baptism as an act of faith on the parents' part. They view God's grace to be able to save the infant beyond human comprehension. They take the verse Hebrews 13:8 out of context: Jesus Christ the same yesterday, and to day, and for ever. Their logic: the infant Jesus saves the infant. The child Jesus saves the child. The adult Jesus saves the adult. The Catholic groups see infant baptism as saving from original sin. This group seems to be in the middle between the Reformers and the orthodox. As we will see in a moment, salvation is done ... By The Work of God: "...ircumcised with the circumcision made without hands... Buried with him in baptism, wherein also ye are risen with him through the faith of the operation of God, who hath raised him from the dead." Salvation is the work of God. Let's remember that when God gives the command to circumcise as a token or a sign. It represented the work of God. Abraham's response was just faith. He carried out the sign, the symbol, of faith. In fact if you read Genesis, Abraham was justified by faith as recorded in Genesis 15:6. The command to circumcise comes years later when Isaac is born in Genesis 17. Paul uses imagery of circumcision to reveal an important truth. Let's look at circumcision again. - First, it reveals. Flesh is cutaway and reveals a source of life. It is a witness of eternal life that links everyone here with Adam. - Second, it reinforces a truth. Because Adam and Eve sinned, we are all sinners. Our sin is deeply rooted. We cannot save ourselves. It is cut who circumcises our hearts. It is an action of faith. Paul switches to baptism. We are buried with Christ in that we identify ourselves as Christians. Again it is by faith. That faith begins at the moment of salvation and moves us forward in life until the end when we stand before God in Glory. We trust God to do it all for us. @ Mark 16:16 - "He that believeth and is baptized shall be saved; but he that believeth not shall be damned." @ Acts 2:38 - "Then Peter said unto them, Repent, and be baptized..." @ Acts 2:41 - "Then they that gladly received his word were baptized..." @ Acts 19:5 - "When they heard this, they were baptized in the name of the Lord Jesus." @ Romans 5:10 - "For if, when we were enemies, we were reconciled to God by the death of his Son, much more, being reconciled, we shall be saved by his life." @ Romans 10:13 - "For whosoever shall call upon the name of the Lord shall be saved." @ 1 Corinthians 1:18 - "For the preaching of the cross is to them that perish foolishness; but unto us which are saved it is the power of God." Salvation is complete! It is not by works but by faith. This also means that... II. WE ARE COMPLETE IN OUR FORGIVENESS. And you, being dead in your sins and the uncircumcision of your flesh, hath he quickened together with him, having forgiven you all trespasses; Blotting out the handwriting of ordinances that was against us, which was contrary to us, and took it out of the way, nailing it to his cross (Colossians 2:13-14) Completely Guilty. Paul's choice of words is significant. He first begins with "being dead in your sins..." which points to our actions. He does not use sin but sins. All the deeds a person does prove who he or she is: a sinner. I have heard people complain about how some of their co-workers and fellow students. They ask me, "Why do people do such things?" My answer is simple, "They do what they do because of what they are." This leads to Paul's second half of the equation, "...the uncircumcision of your flesh..." This was a term used by the Jews to describe Gentiles. Gentiles were people outside of God's promises and covenants. Paul applies this statement to describe the former nature of the members of Colossae before their conversion. The nature of the unbeliever makes him or her completely unable to respond by human effort. They are described in Ephesians 2:12 as having no hope. Completely God. Not the contrast between "you, being dead..." and "...hath He quickened together with him..." Here is our hope. God gives life. It is life we gain when we come to Christ. Paul describes the work of forgiveness by pointing to the cross. Note the amount forgiven there - ALL! It is a source of our joy, "Blessed is he whose transgression is forgiven, whose sin is covered" (Ps. 32:1). We find throughout all the Old Testament a system of sacrifices designed to obtain forgiveness. When Moses wrote the Law there was the requirement for the person offering a sin offering to place his hand on the innocent animal. This action was designed to symbolically represent the transference of the guilt from the one making the offering to the innocent animal. The priest, as God's agent, would accept innocent animal now as the appropriate substitute. The Bible declares that "and without shedding of blood is no remission" (Heb. 9:22). That is God's remedy. Christ, the complete innocent, became our sin-bearer: "So Christ was once offered to bear the sins of many; and unto them that look for him shall he appear the second time without sin unto salvation" (Heb. 9:28). That action made it complete. Paul notes that the written record of our sin and deeds - all the laws we broke - are wiped away. Note the words "Blotting out..." in the Greek is compared to the way one would erase ink. Imagine that! You break the law. You receive a citation. You go to court. Someone innocent pays your fine. The judge does something different. He takes your citation, moves a blotter over it, and the permanent ink is gone. It is as if the charge was never written. That is how complete your forgiveness is. Let's look at one more image. The One who wrote the Law was nailed to the Cross. Think on that. Let it sink in and then realize... III. WE ARE COMPLETE IN OUR VICTORY: "And having spoiled principalities and powers, he made a shew of them openly, triumphing over them in it" (Col. 2:15). Debt Cancelled. Our victory is complete because Jesus cancelled the debt. Think of this. Debt does has some power. It has the power to enslave. When you have a load of debt you are limited in what you can do. When Jesus was nailed to the cross and said, "It is finished," that was not a whimper of defeat. That was the cry of victory that shook Hell. The phrase "it is finished" is one Greek word that can be translated the debt is cancelled. The Devil always had power over the sinner by keeping us in fear of death. Death is a great unknown for those who do not know God. If you do not believe in God it is hard to imagine life after death. A minimal belief in God permits some idea of life after death. But because of the question of evil in the world, man has to consider what life in the afterlife will be like. There is within us the truth about our nature that we do not want to admit...that we deserve hell. For some in a works based religion it must be maddening to try to keep a record of all our good deeds and our bad acts. This terrifying balancing act will keep a person in a frantic state of fear. And Satan loves that. But the Good News is that Jesus Christ has cancelled it all and thus has spoiled all the powers against us. He has robbed them of their victory. Devil Disarmed. When you spoil an enemy, you have a defeated and disarmed foe. Hebrew 2:14 reads, "Since then the children share in flesh and blood, He Himself likewise also partook of the same, that through death He might render powerless him who had the power of death, that is, the devil." The coming of Son of God in the Person of Jesus of the Nazarene was a brilliant stroke of military genius by God. With a combination of mercy and grace, the sinner is saved and thus the Devil's destructive power is rendered useless. When you are born again, you have your name entered into the Lamb's book of life. This is what is promised to the believer and unbeliever per the Book of Revelation. Blessed and holy is the one who has a part in the first resurrection; over these the second death has no power, but they will be priests of God and of Christ and will reign with Him for a thousand years...And death and hell were cast into the lake of fire. This is the second death. And whosoever was not found written in the book of life was cast into the lake of fire. (Revelation 20:6, 14-15). Devil's Defeat Displayed: "... he made a shew of them openly, triumphing over them in it." Paul uses language familiar with the typical Roman citizen. When a general came home from victory in battle, he would display the defeated kings and chieftains in chains. When we survey the blood stained cross and look into the empty tomb, we are convinced of our victory. These items are just two of the items which point to the devil's defeat. There is one more item that we tend to gloss over - the church. Nay, in all these things we are more than conquerors through him that loved us. For I am persuaded, that neither death, nor life, nor angels, nor principalities, nor powers, nor things present, nor things to come, nor height, nor depth, nor any other creature, shall be able to separate us from the love of God, which is in Christ Jesus our Lord (Romans 8:37-39). "...we are..." I love those two words. We are conquerors through Jesus Christ. Sin no longer separates us from God's love. It is a done deal. It is the church that shall reign triumphant and ride with Him when He comes to establish a new Kingdom. It is a done deal! CONCLUSION We have complete salvation which provides complete forgiveness and thus we are granted complete victory. Though we are fighting a defeated foe, we should do so with the mindset that there are still pockets of resistance that we must face. The enemy still has strongholds of unsaved souls that we need to enter by God's grace and our obedience. This is our task until that day when He calls us up for the next great event. Until then, let us be more than conquerors! Let us lift up our faces and voices to Him as victors. Let us not fear the darts of the devil but trust the shield of faith to protect us as we move into the battle girded up with the breastplate of righteousness, bound by the belt of truth, carrying our sword the word of God and moving forward with our feet shod with the Good News!
  3. I'll always remember you and keep you in my heart. I've been lucky enough that life brought you into my life and I was able to see and experience what a great man you were to your family and friends. I do miss our talks about woodworking, computers and the news. Our kids will always remember you because you made that big of an impact on them with the love you shared. I hope one day I will see you again to thank you, hug you and tell you how much you meant to me.
  4. hey did you hear, heaven is over flowing with love since Aunt Vicki arrived. I'll never forget her never ending smiles and her heart warming laughs. Whenever we were together my goal was to hear her smile. She'll never be gone from our hearts, our fond memories. I'm glad your no longer in pain. I know in my heart you are in a place filled with love for you. I'll never forget your laugh as I'm sure it could be heard in heaven and now you are in heaven sometimes I feel I still hear your laugh which warms my heart. You were a good person full of love for everyone. I'm sad I don't get to sing some karaoke with you anymore but I do know if anyone lived life every day, it was you. I never knew you to take life for granted and that's something we should all think about. I love you Aunt Vicki and I hope I will see you again.
  5. Thank you for the lives of all those loved ones who, whilst no longer walking beside us or holding our hand along life’s journey as once they did, live on in the collective memory of those they have left behind. Enjoy their company, Loving God until we shall meet again Amen ---------------------------------------------------- Birth date: Feb 7th 1954 Death date: Nov 26th 2016
  6. I cant believe I'm standing here, Saying my goodbyes To a Dad that meant the world to me, My Dad with big brown eyes Anyone who loved him Will know how I feel today, My Dad was the sunshine of my life Who could light up the darkest days. So goodbye Dad my only Dad, Take your wings and fly To eternal happiness and your reward, through the big gates in the sky. ----------------------------------------------------------- Birth date: April 11th, 1948 Death date: March 24th, 2009
  7. O God, who brought us to birth, and in whose arms we die, in our grief and shock, contain and comfort us; embrace us with your love, give us hope in our confusion and grace to let go into new life; through Jesus Christ. Amen. -------------------------------------------------- Birth Date March 12th 1972 Death Date November 8th 1993
  8. If we could bring you back again, For one more hour or day, We’d express all our unspoken love; We’d have countless things to say. If we could bring you back again, We’d say we treasured you, And that your presence in our lives Meant more than we ever knew. If we could bring you back again, To tell you what we should, You’d know how much we miss you now, And if we could, we would.
  9. When someone we love passes away, We ache, but we go on; Our dear departed would want us to heal, After they are gone. Grief is a normal way to mend The anguish and pain in our hearts; We need time to remember and time to mourn, Before the recovery starts. Let’s draw together to recuperate, As we go through this period of sorrow; Let’s help each other, with tender care To find a brighter tomorrow. ------------------------------------------------------------------ Date of Birth January 16, 1971 Date of Death January 3, 2013
  10. Earlier
  11. The following command line procedure uses the md5sum and openssl utilities to simplify comparison: Log in to the command line. To calculate the md5 checksum of the modulus of the key in question, use the following command syntax: openssl rsa -in /config/ssl/ssl.key/<key_name>.key -modulus -noout | openssl md5 Note: Replace <key_name> with the name of the SSL key file. For example: openssl rsa -in /config/ssl/ssl.key/default.key -modulus -noout | openssl md5 The command displays the md5 checksum of the modulus of the key. The checksum is displayed as a 32-character hexadecimal string, which appears similar to the following example: d5eddbb45275a3378dff01cb70868136 To calculate the md5 checksum of the modulus of the certificate in question, use the following command syntax: openssl x509 -in /config/ssl/ssl.crt/<cert_name>.crt -modulus -noout | openssl md5 Note: Replace <cert_name> with the name of the SSL certificate file. For example: openssl x509 -in /config/ssl/ssl.crt/default.crt -modulus -noout | openssl md5 The command displays the md5 checksum of the modulus of the certificate. The checksum is displayed as a 32 character hexadecimal string, which appears similar to the following example: b453c4304edec9cee0457a18bdb9f601 Compare the output of the commands. If the output from both commands is the same, the certificate and private key are a matching pair. If the output does not match, the certificate and key are not a pair. Note: In the command and output examples used in this article, the checksums do not match; therefore, the certificate and key are not a pair.
  12. Our BIG-IQ rebooted due to a scheduled power outage and when it came back online it was in INOPERATIVE state. I performed a tail -f /var/log/ltm and kept seeing that services would not start. [root@bigiq:INOPERATIVE:] config # tail -f /var/log/ltm Nov 4 11:20:02 bigiq emerg load_config_files: "/usr/bin/tmsh -n -g load sys config partitions all base " - failed. -- 010719a2:3: PostgreSQL database error: ERROR: role "blahuser" already exists CONTEXT: SQL statement "CREATE ROLE blahuser LOGIN" PL/pgSQL function rbac_create_user(name) line 7 at EXECUTE Unexpected Error: Loading configuration process failed. Nov 4 11:20:02 bigiq err mcpd[4963]: 010719a2:3: PostgreSQL database error: ERROR: role "blahuser" already exists CONTEXT: SQL statement "CREATE ROLE blahuser LOGIN" PL/pgSQL function rbac_create_user(name) line 7 at EXECUTE Nov 4 11:20:02 bigiq err tmsh[8140]: 01420006:3: Loading configuration process failed. Nov 4 11:20:02 bigiq emerg load_config_files: "/usr/bin/tmsh -n -g load sys config partitions all base " - failed. -- 010719a2:3: PostgreSQL database error: ERROR: role "blahuser" already exists CONTEXT: SQL statement "CREATE ROLE blahuser LOGIN" PL/pgSQL function rbac_create_user(name) line 7 at EXECUTE Unexpected Error: Loading configuration process failed. Nov 4 11:20:02 bigiq err mcpd[4963]: 01070422:3: Base configuration load failed. Nov 4 11:20:02 bigiq info promptstatusd[3945]: 01460007:6: semaphore mcpd.running(1) released Nov 4 11:20:02 bigiq notice promptstatusd[3945]: 01460006:5: mcpd.running(1) released, subscribe to mcpd Nov 4 11:20:02 bigiq notice mcpd[4963]: 01070404:5: Add a new Publication for publisherID %istatsd and filterType (nil) Nov 4 11:20:02 bigiq notice scriptd[6469]: 014f0001:5: started Nov 4 11:20:02 bigiq notice mcpd[4963]: 01070404:5: Add a new Publication for publisherID cluster_file_operations and filterType (nil) Nov 4 11:20:02 bigiq notice mcpd[4963]: 01070404:5: Add a new Publication for publisherID scriptd-publisher and filterType (nil) Nov 4 11:20:03 bigiq notice iprepd[5578]: 015c0009:5: IP Reputation has no license currently Nov 4 11:20:05 bigiq notice logger: /bin/sh /etc/bigstart/scripts/avr.provision ==> /usr/bin/bigstart singlestatus avrd Nov 4 11:20:05 bigiq notice logger: /bin/sh /etc/bigstart/scripts/avr.provision ==> /usr/bin/bigstart singlestatus dosl7d Nov 4 11:20:05 bigiq notice logger: /bin/sh /etc/bigstart/scripts/avr.provision ==> /usr/bin/bigstart singlestatus asm Nov 4 11:20:05 bigiq notice logger: /bin/bash ./run 0 0 ==> /usr/bin/bigstart stop setupd Nov 4 11:20:05 bigiq notice logger: /bin/sh /etc/bigstart/scripts/avr.provision ==> /usr/bin/bigstart singlestatus datasyncd Nov 4 11:20:05 bigiq notice logger: /bin/sh /etc/bigstart/scripts/avr.provision ==> /usr/bin/bigstart singlestatus admd Nov 4 11:20:06 bigiq notice logger: /bin/sh /etc/bigstart/scripts/avr.provision ==> /usr/bin/bigstart singlestatus mgmt_acld Nov 4 11:20:06 bigiq notice logger: /bin/sh /etc/bigstart/scripts/avr.provision ==> /usr/bin/bigstart singlestat I attempted a reboot of the BIG-IQ CM in hopes that it would correct the services not starting but no luck. So my next step was to verify the config files would load so I ran the verify command [root@bigiq:INOPERATIVE:Standalone] config # tmsh load sys config verify Validating system configuration... /defaults/asm_base.conf /defaults/config_base.conf /defaults/ipfix_ie_base.conf /defaults/ipfix_ie_f5base.conf /defaults/low_profile_base.conf /defaults/low_security_base.conf /defaults/policy_base.conf /defaults/wam_base.conf /defaults/analytics_base.conf /defaults/apm_base.conf /defaults/apm_saml_base.conf /defaults/app_template_base.conf /defaults/classification_base.conf /var/libdata/dpi/conf/classification_update.conf /defaults/urlcat_base.conf /defaults/daemon.conf /defaults/pem_base.conf /defaults/profile_base.conf /defaults/sandbox_base.conf /defaults/security_base.conf /defaults/urldb_base.conf /usr/share/monitors/base_monitors.conf Validating configuration... /config/bigip_base.conf /config/bigip_user.conf /config/bigip.conf 010719a2:3: PostgreSQL database error: ERROR: role "blahuser" already exists CONTEXT: SQL statement "CREATE ROLE blahuser LOGIN" PL/pgSQL function rbac_create_user(name) line 7 at EXECUTE Unexpected Error: Validating configuration process failed. Now I know the config files won't fully load and it appears its because of this user and since I don't have access to the GUI I figured I'd attempt to find what files does blahuser exist. I opened an F5 case, I created a qkview file and uploaded it to iHealth and then clicked Files inside that qkview and unchecked Limit to log files and entered in the search box blahuser which showed me the three files I need to remove blahuser from. /config/bigip/auth/userrolepartitions /config/bigip_user.conf /etc/passwd Ran the verify command again that I ran above and it passed (no errors). Rebooted the BIG-IQ CM and it came up with no issues/errors. Tried creating blahuser and it still errors out I just created a blahuserTST and that worked. As an extra precaution I did a tmsh save /sys config and I was able to reboot with no errors. Problem is solved except for the inability to recreate the user which isn't a huge deal but would love to know why and the solution which I may look at later.
  13. First it would be helpful to get a list of users that are already on your Linux box. Get a List of All Users using the /etc/passwd File Local user information is stored in the /etc/passwd file. Each line in this file represents login information for one user. less /etc/passwd Below is an example $ less /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:999:997:User for polkitd:/:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin nginx:x:998:996:nginx user:/var/cache/nginx:/bin/sh mysql:x:27:27:MariaDB Server:/var/lib/mysql:/sbin/nologin apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin dockerroot:x:997:993:Docker User:/var/lib/docker:/sbin/nologin netadm1n:x:1000:1000:netadm1n:/home/netadm1n:/bin/bash Each line has seven fields delimited by colons that contain the following information: User name Encrypted password (x means that the password is stored in the /etc/shadow file) User ID number (UID) User’s group ID number (GID) Full name of the user (GECOS) User home directory Login shell (defaults to /bin/bash) If you want to display only the username you can use either awk or cut commands to print only the first field containing the username: Using awk example: $ awk -F: '{ print $1}' /etc/passwd root bin daemon adm lp sync shutdown halt mail operator games ftp nobody systemd-network dbus polkitd postfix sshd tss nginx mysql apache dockerroot netadm1n Using cut example: $ cut -d: -f1 /etc/passwd root bin daemon adm lp sync shutdown halt mail operator games ftp nobody systemd-network dbus polkitd postfix sshd tss nginx mysql apache dockerroot netadm1n So you may have identified your Linux system doesn't have a user on it that needs to exist. Let's go to the next section that describes how to add a user How to Create Users in Linux In Linux, you can create a user account and assign the user to different groups using the useradd command. The general syntax for the useradd command is as follows: useradd [OPTIONS] USERNAME NOTE: To be able to use the useradd command and create new users you need to be logged in as root or a user with sudo access. To create a new user account type useradd followed by the username. For example to create a new user named username you would run: useradd username The command adds an entry to /etc/passwd /etc/shadow /etc/group /etc/gshadow files To be able to log in as the newly created user, you need to set the user password. To do that run the passwd command followed by the username: passwd username You will be prompted to enter and confirm the password. In most Linux distros, when creating a new user account with the useradd command the user home directory is not created. Use the -m (--create-home) option to create the user home directory as /home/username: useradd -m username The command above creates the new user’s home directory and copies files from /etc/skel directory to the user’s home directory.
  14. Common LB Application Patterns SSL Offload SSL offloading, also known as SSL termination, decrypts all HTTPS traffic on the load balancer. Layer 7 actions can be carried out and the data proceeds to the backend server as plain HTTP traffic. SSL offloading allows data to be inspected as it passes between the load balancer and server. It also reduces CPU demand on an application server by decrypting data in advance. SSL offloading is vulnerable to attack as the data travels unencrypted between the load balancer and application server. SSL Bridge SSL bridging is a process where a device, usually located at the edge of a network, decrypts SSL traffic and then re-encrypts it before sending it on to the Web server. SSL bridging can be useful when the edge device performs deep-packet inspection to verify that the contents of the SSL-encrypted transmission are safe, or if there are security concerns about unencrypted traffic traversing the internal network. Pass-through SSL passthrough happens when an incoming security sockets layer (SSL) request is not decrypted at the load balancer but passed along to a server for decryption. SSL passthrough is used when web application security is a top concern. SSL passthrough keeps the data encrypted as it travels through the load balancer. The web server does the decryption upon receipt. SSL passthrough uses TCP mode to pass encrypted data to servers. The data passes through fully encrypted, which precludes any layer 7 actions. LTM Policy GTM (Active/Active or Active/Passive) UnCommon Patterns 2-way SSL Openshift Patterns
  15. We were running into an issue and I thought it would be good to know what Virtual Servers have a lot of connections but the Statistics Module isn't good unless you clear statistics and start watching at that moment (don't forget to refresh) Here are two CLI commands that did me well Maximum Connections per Virtual Server tmsh show sys connection | egrep -v 'T|S' | awk '{print $2}' | sort -n | uniq -c | sort -n The output looks something like this with the Virtual Server at the bottom with 3655 connections 330 172.74.1.20:443 709 10.40.64.162:53 713 10.40.64.163:53 966 172.74.1.62:443 1086 10.40.32.50:53 1210 172.74.1.72:443 1460 10.47.53.25:389 1465 10.47.53.27:389 1467 10.47.53.26:389 1477 10.44.112.234:53 1580 10.44.112.233:53 2046 172.74.1.8:17533 2393 10.43.144.136:389 2395 10.47.144.151:389 3655 172.74.1.44:443 Maximum Connections per VIP (really just another way to get the same results) tmsh show sys connection | egrep -v 'T|S' | awk '{print $2}' | cut -d: -f 1 |sort -n | uniq -c | sort -n
  16. So I upgrade from 13.1.1.5 to 13.1.3 and out of 30 LTMs (all vCMP Guests) only about half are successful. What happens is after the system boots up on the new code it shows the configuration is unable to shown. First step in troubleshooting is go to the CLI and run tmsh load sys config See where it errors out (see below for my example) [root@txsat1slbco22:/S3-red-P::Offline:Disconnected] config # tmsh load sys config Loading system configuration... /defaults/asm_base.conf /defaults/config_base.conf /defaults/ipfix_ie_base.conf /defaults/ipfix_ie_f5base.conf /defaults/low_profile_base.conf /defaults/low_security_base.conf /defaults/policy_base.conf /defaults/wam_base.conf /defaults/analytics_base.conf /defaults/apm_base.conf /defaults/apm_oauth_base.conf /defaults/apm_saml_base.conf /defaults/app_template_base.conf /defaults/classification_base.conf /var/libdata/dpi/conf/classification_update.conf /defaults/ips_base.conf /var/libdata/ips/ips_update.conf /defaults/daemon.conf /defaults/pem_base.conf /defaults/profile_base.conf /defaults/sandbox_base.conf /defaults/security_base.conf /defaults/urldb_base.conf /usr/share/monitors/base_monitors.conf /defaults/cipher.conf /defaults/ilx_base.conf Loading configuration... Loading schema version: 13.1.1.4 /config/bigip_base.conf /config/bigip_user.conf /config/bigip.conf Loading schema version: 13.1.3 01071008:3: Provisioning failed with error 1 - 'Disk limit exceeded. 16188 MB are required to provision these modules, but only 15752 MB are available.' . Unexpected Error: Loading configuration process failed. [root@txsat1slbco22:/S3-red-P::Offline:Disconnected] config # 2019 Aug 14 13:05:35 slot3/txsat1slbco22 overdog[3111]: 01140043:0: Ha feature software_update reboot requested. I have four cores assigned to the vCMP Guest which per F5 that should be plenty for three modules provisioned. As a test I removed APM (especially since I don't use it yet so no risk) and then clicked System - Configuration - General - Reboot Guest Chassis to reboot and save the config first. Then reboot back to the partition (System - Software Management - Boot Locations and click HD1.1 or whatever the partition is that has the new code) see if the issue goes away. SAME issue.. CRAP! My next attempt is to reduce the amount of images/partitions on the drive to just two versus three. Run the following command to show you how many images/partitions you have tmsh show sys software --------------------------------------------------------- Sys::Software Status Volume Slot Product Version Build Active Status --------------------------------------------------------- HD1.1 3 BIG-IP 13.1.3 0.0.6 yes complete HD1.2 3 BIG-IP 12.1.3.5 0.0.10 no complete HD1.3 3 BIG-IP 13.1.1.4 0.0.4 no complete --------------------------- Sys::Software Update Check --------------------------- Check Enabled true Phonehome Enabled true Frequency weekly Status none Errors 0 My goal is to always keep two versions. The working one and the future one... always have 1 rollback. So in this case we are running 13.1.1.4 and "trying" to upgrade to 13.1.3 so we don't need HD1.2 so lets remove it in order to free up some space. The below is the command I ran to remove HD1.2 tmsh delete /sys software volume HD1.2 Then double check by re-running your show sys software command tmsh show sys software -------------------------------------------------------- Sys::Software Status Volume Slot Product Version Build Active Status -------------------------------------------------------- HD1.1 3 BIG-IP 13.1.3 0.0.6 yes complete HD1.3 3 BIG-IP 13.1.1.4 0.0.4 no complete --------------------------- Sys::Software Update Check --------------------------- Check Enabled true Phonehome Enabled true Frequency weekly Status none Errors 0 Okay now let's just do a quick verify loading the config tmsh load sys config verify Validating system configuration... /defaults/asm_base.conf /defaults/config_base.conf /defaults/ipfix_ie_base.conf /defaults/ipfix_ie_f5base.conf /defaults/low_profile_base.conf /defaults/low_security_base.conf /defaults/policy_base.conf /defaults/wam_base.conf /defaults/analytics_base.conf /defaults/apm_base.conf /defaults/apm_oauth_base.conf /defaults/apm_saml_base.conf /defaults/app_template_base.conf /defaults/classification_base.conf /var/libdata/dpi/conf/classification_update.conf /defaults/ips_base.conf /var/libdata/ips/ips_update.conf /defaults/daemon.conf /defaults/pem_base.conf /defaults/profile_base.conf /defaults/sandbox_base.conf /defaults/security_base.conf /defaults/urldb_base.conf /usr/share/monitors/base_monitors.conf /defaults/cipher.conf /defaults/ilx_base.conf Validating configuration... Loading schema version: 13.1.1.4 /config/bigip_base.conf /config/bigip_user.conf /config/bigip.conf /config/bigip_script.conf Loading schema version: 13.1.3 There were warnings: /Common/f5.bigiq-analytics definition:130: warning: [use curly braces to avoid double substitution][($start_hour] /Common/f5.bigiq-analytics definition:131: warning: [use curly braces to avoid double substitution][($end_hour] /Common/f5.bigiq-analytics definition:133: warning: [use curly braces to avoid double substitution][$end_minute] /Common/f5.bigiq-analytics definition:141: warning: [use curly braces to avoid double substitution][$start_random] /Common/f5.bigiq-analytics definition:145: warning: [use curly braces to avoid double substitution][round("00.[lindex $start_random 1]"] /Common/f5.bigiq-analytics definition:2189: warning: [use curly braces to avoid double substitution][$nonpriority] /Common/f5.bigiq-analytics definition:2192: warning: [use curly braces to avoid double substitution][$nonpriority] /Common/f5.bigiq-analytics definition:2249: warning: [use curly braces to avoid double substitution][$::time] /Common/f5.bigiq-analytics definition:2290: warning: [use curly braces to avoid double substitution][$::uniqueid] /Common/f5.bigiq-analytics definition:2363: warning: [use curly braces to avoid double substitution][($start_hour] /Common/f5.bigiq-analytics definition:2363: warning: [use curly braces to avoid double substitution][($current_hour] /Common/f5.bigiq-analytics definition:2364: warning: [use curly braces to avoid double substitution][$time] /Common/f5.bigiq-analytics definition:2529: warning: [use curly braces to avoid double substitution][$::uniqueid] /Common/f5.bigiq-analytics definition:2531: warning: [use curly braces to avoid double substitution][$::uniqueid] /Common/f5.bigiq-analytics definition:2547: warning: [use curly braces to avoid double substitution][$::uniqueid] /Common/f5.bigiq-analytics definition:2549: warning: [use curly braces to avoid double substitution][$::uniqueid] /Common/f5.bigiq-analytics definition:2560: warning: [use curly braces to avoid double substitution][$::uniqueid] /Common/f5.bigiq-analytics definition:2562: warning: [use curly braces to avoid double substitution][$::uniqueid] /Common/f5.bigiq-analytics definition:2871: warning: [use curly braces to avoid double substitution][$::uniqueid] /Common/f5.bigiq-analytics definition:2917: warning: [use curly braces to avoid double substitution][$::uniqueid] /Common/f5.bigiq-analytics definition:2920: warning: [use curly braces to avoid double substitution][$::uniqueid] /Common/f5.bigiq-analytics definition:2927: warning: [use curly braces to avoid double substitution][$::uniqueid] /Common/f5.bigiq-analytics definition:2929: warning: [use curly braces to avoid double substitution][$::uniqueid] /Common/f5.bigiq-analytics definition:2968: warning: [use curly braces to avoid double substitution][$::uniqueid] /Common/f5.bigiq-analytics definition:3012: warning: [use curly braces to avoid double substitution][$::uniqueid] /Common/f5.bigiq-analytics definition:3016: warning: [use curly braces to avoid double substitution][$::uniqueid] /Common/f5.bigiq-analytics definition:3023: warning: [use curly braces to avoid double substitution][$::uniqueid] /Common/f5.bigiq-analytics definition:3025: warning: [use curly braces to avoid double substitution][$::uniqueid] curly braces error isn't critical and technically shouldn't be the reason we can't load the config so let's try and load the config. We do know based on the verify that it does appear to be making it further than before so I believe removing that partition may have solved the issue tmsh load /sys config Command line is looking positive (txsat1slbco21)(cfg-sync Disconnected)(/S3-green-P::Standby)(/Common)(tmos) Let's log into the GUI to make sure all is good.... DAMN it! Have to re-activate license on the Viprion chassis which will affect every vCMP Guest you have on that chassis.
  17. Pool For this Application Template the following needs to be checked Properties LB mode: [ dynamic-ratio-member,dynamic-ratio-node,fastest-app-response,fatest-node,least-connections-member,least-connections-node,least-sessions,observed-member,observed-node,predictive-member,predictive-node,ratio-least-connections-member,ratio-least-connections-node,ratio-member,ratio-node,ratio-session,round-robin,weighted-least-connections-member,weighted-least-connections-node ] (Load-balancing mode) Monitors: [ http,https,icmp,tcp-half-open,tcp ] (List of health monitors (each by name or AS3 pointer) Members Service port: 80 (Service L4 port (optional port-discovery may override)) Administration State: [enabled,disable,offline] (Setting adminState to enable will create the node in an operational state. Set to disable to disallow new connections but allow existing connections to drain. Set to offline to force immediate termination of all connections) Share Nodes: Enabled checked (If enabled, nodes are created in /Common instead of the tenant) Server addresses: Editable (Static IP addresses of servers (nodes) Slow ramp time: 300 (AS3 slowly the connection rate to a newly-active member slowly during this interval (seconds)) JSON Detail { "properties": { "class": {}, "members": { "type": "array", "items": { "type": "object", "properties": { "servicePort": { "type": "number", "default": 80 }, "adminState": { "type": "string", "default": "enable" }, "shareNodes": { "type": "boolean", "default": true, "const": true }, "serverAddresses": { "type": "array" } } } }, "monitors": { "type": "array", "default": [ "http" ] }, "loadBalancingMode": { "type": "string", "default": "least-connections-member", "const": "least-connections-member" }, "slowRampTime": { "type": "number", "default": 300, "const": 300 } }, "type": "object", "additionalproperties": false } Here are the options that are not selected
  18. Persist All default options (nothing customized for this template) JSON Detail { "properties": { "class": {}, "persistenceMethod": { "type": "string" } }, "type": "object", "additionalProperties": false }
  19. HTTP_Profile All default options (nothing customized for this template) JSON Detail { "properties": { "class": {} }, "type": "object", "additionalproperties": false }
  20. Analytics_Profile For this Application Template the following needs to be checked Collected Statistics Internal Logging (Specifies that statistics logs are stored in the system) Collect Max TPS and Throughput (Specifies that the system collects statistics for the maximum number of transactions per second, and the maximum amount of traffic moving through the system, both request and response throughput values) Collect Page Load Time (Specifies that the system collects statistics of the round-trip latency between client end-users and the servers) Collect Client-Side Statistics (Specifies that the system collects statistics regarding the HTTP request and response times) Collect URL (Specifies that the system collects statistics of requested URLs) Collect Countries (Specifies that the system collects statistics of the name of the countries from which that traffic was sent) Collect Client IP Addresses (Specifies that the system collects statistics of the IP addresses of where the traffic came from) Collect Client Subnet (Specifies that the system collects statistics of client subnets) Collect Response Code (Specifies that the system collects statistics about the distribution of HTTP response codes returned by the servers) Collect User Agent (Specifies that the system collects statistics about browsers used to send traffic) Collect Method (Specifies that the system collects statistics about the distribution of HTTP methods found in requests) Collect Operating System and Browser (Specifies that the system collect statistics about the OSs and Browsers used to send requests) Which produces the following JSON Detail { "properties": { "class": {}, "collectUserAgent": { "type": "boolean", "default": true, "const": true }, "collectClientSideStatistics": { "type": "boolean", "default": true, "const": true }, "collectGeo": { "type": "boolean", "default": true, "const": true }, "collectUrl": { "type": "boolean", "default": true, "const": true }, "collectOsAndBrowser": { "type": "boolean", "default": true, "const": true }, "collectMethod": { "type": "boolean", "default": true, "const": true }, "collectResponseCode": { "type": "boolean", "default": true, "const": true }, "collectSubnet": { "type": "boolean", "default": true, "const": true }, "collectIp": { "type": "boolean", "default": true, "const": true }, "collectPageLoadTime": { "type": "boolean", "default": true, "const": true }, "collectMaxTpsAndThroughput": { "type": "boolean", "default": true, "const": true } }, "type": "object", "additionalproperties": false } The following are not selected Capture Filter Request Captured Parts [ all,body,headers,none ] (Specifies which parts of the request data the system captures) Response Captured Parts [ all,body,headers,none ] (Specifies which parts of the response data the system captures) DoS Activity [ any,mitigated-by-dosl7 ] (Specifies whether the system captures traffic data mitigated by the D0S Layer 7 Enforcer, or traffic regardless of DoS activity) Captured Protocols [ all, ] Qualified for JavaScript Injection Enabled (not checked by default) Virtual Servers Node Addresses Response Status Codes HTTP Methods URL Filter Type URL Path Prefixes User Agent Substrings Client IP Addresses Request Content Filter Search Request Content Filter Search String Response Content Filter Search Part Response Content Filter Search String Collected Statistics External Logging Captured Traffic Internal Logging Captured Traffic External Logging externalLogging Use (AS3 pointer to log publisher declaration) Bigip (pathname of existing BIG-IP log publisher) Notification by syslog Notification by SNMP Notification by Email E-mail Notification Recipients Publish iRule Statistics Collect User Sessions URLs for Statistics Collection Countries for Statistics Collection Subnets for Statistics Collection Session Cookie Security [ ssl-only,always-secure,never-secure ] (Specify whether to secure session cookies) Session Timeout in Minutes 5 (The number of minutes of user non-activity to allow before the system considers the session to be over)
  21. Add Classes to your AS3 Application Template Go through and select the following for this template Analytics_Profile HTTP_Profile Persist Pool Service_HTTP TCP_Profile NEXT its time to customize each class which creates the JSON Detail
  22. Here is the template used in BIG-IQ name: http-app-v1 tenant: check Editable Description: Custom HTTP template PROPERTIES { "type": "object", "properties": { "class": { "type": "string", "const": "Application" }, "template": {}, "schemaOverlay": {}, "label": {}, "remark": {} }, "additionalProperties": { "allOf": [ { "anyOf": [ { "properties": { "class": { "const": "Analytics_Profile" } } }, { "properties": { "class": { "const": "HTTP_Profile" } } }, { "properties": { "class": { "const": "Pool" } } }, { "properties": { "class": { "const": "Service_HTTP" } } }, { "properties": { "class": { "const": "Persist" } } }, { "properties": { "class": { "const": "TCP_Profile" } } } ] }, { "if": { "properties": { "class": { "const": "Analytics_Profile" } } }, "then": { "$ref": "#/definitions/Analytics_Profile" } }, { "if": { "properties": { "class": { "const": "HTTP_Profile" } } }, "then": { "$ref": "#/definitions/HTTP_Profile" } }, { "if": { "properties": { "class": { "const": "Pool" } } }, "then": { "$ref": "#/definitions/Pool" } }, { "if": { "properties": { "class": { "const": "Service_HTTP" } } }, "then": { "$ref": "#/definitions/Service_HTTP" } }, { "if": { "properties": { "class": { "const": "Persist" } } }, "then": { "$ref": "#/definitions/Persist" } }, { "if": { "properties": { "class": { "const": "TCP_Profile" } } }, "then": { "$ref": "#/definitions/TCP_Profile" } } ] }, "required": [ "class" ], "definitions": { "Analytics_Profile": { "properties": { "class": {}, "collectUserAgent": { "type": "boolean", "default": true, "const": true }, "collectClientSideStatistics": { "type": "boolean", "default": true, "const": true }, "collectGeo": { "type": "boolean", "default": true, "const": true }, "collectUrl": { "type": "boolean", "default": true, "const": true }, "collectOsAndBrowser": { "type": "boolean", "default": true, "const": true }, "collectMethod": { "type": "boolean", "default": true, "const": true }, "collectResponseCode": { "type": "boolean", "default": true, "const": true }, "collectSubnet": { "type": "boolean", "default": true, "const": true }, "collectIp": { "type": "boolean", "default": true, "const": true }, "collectPageLoadTime": { "type": "boolean", "default": true, "const": true }, "collectMaxTpsAndThroughput": { "type": "boolean", "default": true, "const": true } }, "type": "object", "additionalproperties": false }, "HTTP_Profile": { "properties": { "class": {} }, "type": "object", "additionalproperties": false }, "Pool": { "properties": { "class": {}, "members": { "type": "array", "items": { "type": "object", "properties": { "servicePort": { "type": "number", "default": 80 }, "adminState": { "type": "string", "default": "enable" }, "shareNodes": { "type": "boolean", "default": true, "const": true }, "serverAddresses": { "type": "array" } } } }, "monitors": { "type": "array", "default": [ "http" ] }, "loadBalancingMode": { "type": "string", "default": "least-connections-member", "const": "least-connections-member" }, "slowRampTime": { "type": "number", "default": 300, "const": 300 } }, "type": "object", "additionalproperties": false }, "Service_HTTP": { "properties": { "class": {}, "virtualPort": { "type": "number", "default": 80 }, "profileAnalytics": { "type": "object", "properties": { "use": { "type": "string", "default": "Analytics_Profile" } } }, "profileHTTP": { "type": "object", "properties": { "use": { "type": "string", "default": "HTTP_Profile" } } }, "virtualAddresses": { "type": "array" }, "pool": { "type": "string", "default": "Pool" }, "enable": { "type": "boolean", "default": true }, "snat": { "type": "object", "properties": { "bigip": { "type": "string" } } }, "iRules": { "type": "array" }, "metadata": { "type": "object", "properties": { "value": { "type": "string" } } }, "profileTCP": { "type": "object", "properties": { "use": { "type": "string" } } }, "persistenceMethods": { "type": "array", "default": [ "cookie" ] }, "clonePools": { "type": "object", "properties": { "ingress": { "type": "object", "properties": { "bigip": { "type": "string" } } }, "egress": { "type": "object", "properties": { "bigip": { "type": "string" } } } } } }, "type": "object", "additionalproperties": false }, "Persist": { "properties": { "class": {}, "persistenceMethod": { "type": "string" } }, "type": "object", "additionalProperties": false }, "TCP_Profile": { "properties": { "class": {} }, "type": "object", "additionalProperties": false } } }
  23. Just run this command to see what your uptime is on your F5 BIG-IP # tmsh run /util bash -c uptime 15:12:56 up 302 days, 15:10, 1 user, load average: 2.92, 3.23, 3.16
  24. rev.dennis

    Clear Browser Cache

    Google Chrome On your computer, open Chrome. At the top right, click More . Click More tools Clear browsing data. At the top, select All time. Next to "Cookies and other site data" and "Cached images and files," check the boxes. Click Clear data. Safari <coming soon>
  25. Upgrade Instructions on how I upgraded our BIG-IQ from 6.1.0 to 7.0.0 First download the .iso from support.f5.com Log into BIG-IQ GUI and click on System - Software Management Click on Images and then the button Upload Image then browse to that .iso you just downloaded and click open. Then you have to click Upload and you'll see a status bar similar to the one I show below Now that the image uploaded now its time to install the image. So now click on System - Software Management - Installations Click the Upgrade button Now you need to select whether you want to do a Rolling Upgrade or Regular Upgrade. (Rolling Upgrade is great if you don't want any interruption and Regular Upgrade is for anyone that is okay with your BIG-IQ being down for awhile and if you have less than 3 DCDs) NOTE: the system will upgrade all DCD's first so you still have full use of BIG-IQ until it upgrades the BIG-IQ system appliance When they are at 100% you'll loose connection and it take a long long time before you get anything to pop backup on the GUI which below is one of the several screens that are displayed when its booting back up
  26. shadowmac

    Cloud Storage Issues

    So many choices and yes I have tried them all and in many cases at the same time since certain applications only offer support for one or the other or a couple but never all of them. In my experience these last few years, dropbox is the clear winner when you want to talk about compatibility. If an app supports any cloud type of storage then Dropbox is always there but (always a but) its also the most expensive of all cloud storage services. I was paying $199/year for 2TB which they just upgraded to 3TB. They really don't offer a wide selection of choices. I use to use Google Drive a lot but they have been phasing Google Drive out for some BS app called Drive Stream which is part of the Google Suite and that is great if you are a business but if you just want to pay for cloud storage then Google probably won't be your choice anymore. I think its a HUGE mistake on Google's part to decomm Google Drive. It was a direct competitor to Dropbox and the fight was always very close on who won. Right now, Dropbox is still the winner since Google has removed itself and now offers this tool called backup and sync and its complete garbage. Another one bites the dust. Through the years I have become more and more an Apple fan and then Steve Jobs passes away and I can see and feel how Apple has lost a lot of its drive for innovation and being the leader of new cool stuff. iCloud Drive could be cooler and I expected it to be cooler but its slower than any of the other cloud services and its not always available as an option to store stuff or pull files from. They are also one of the more expensive cloud storage choices. Since I have an Amazon account and I thought because AWS (Amazon Web Services) is so huge and pretty much dominates the cloud services arena I thought Amazon Drive would be the coolest but its the least accepted cloud storage solution of any of them. I haven't found more than a couple applications that recoginizes Amazon Drive. It could grow but I really don't think Amazon cares if it grows or not. It feels as though Amazon threw it out there for people to use if they want but without any bells or whistles or compatibility. Now anyone who knows me knows I have a strong dislike for Microsoft. I feel they just buy other peoples inventions, puts the Microsoft sticker on it and changes the code ever so slightly to make it worse than it was. With the release of Office 365 (where if you want to use office products anymore you have to continue to pay a subscription for it) they are slowly getting away from you having the ability to just buy office products which I hate that I have to keep paying for something I already bought. Something nice with Office 365 is they give you 1TB of storage on OneDrive. I was very reluctant to use OneDrive (stupid Microsoft) but since I already paid for it with my Office 365 subscription and its accepted on just about every application I have tried and it works really well with any office apps on my iPhone or iPad, it just makes sense. Now they don't allow you to expand your storage like the others. You are locked to 1TB of drive and thats it (probably because there stupid Windows servers would roll over). So there you have it.. migrating from Dropbox and Google Drive to OneDrive and keeping some on my iCloud Drive. This saves me some money. Also I do utilize my QNAP NAS as a backup of all my old archive stuff that I don't need in the cloud.
  27. I have played aroune with Sublime Text, Atom, Eclipse IDE and I have been recently told to try Visual Studio Code. I have been trying not to since it has the name Microsoft in the name but I'll be honest, its pretty nice. I learned that this is very much like Atom or Sublime. Atom slows down with large projects where VS Code doesn't slow down at all. Some extensions I installed to help me out include: Rest Client – quick and easy testing of REST API (not as feature rich as POSTMAN, but good for quick testing) Python Prettier – For making JSON look indented (having issues installing based on a corrupt zip file) YAML – for ansible ANSIBLE Indented block highlighting – for highlighting the JSON block you are in (useful for F5 AS3) Project Manager – for easily switching between multiple projects There are so many videos to help you get going with VS Code.
  1. Load more activity
×
×
  • Create New...